1,10 → 1,23 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe modèle, donc d'accès au données, elle ne devrait pas être appelée de l'extérieur. |
* Elle fait office d'abstraction légère de base de données en utilisant les objects PDO natifs |
* de PHP |
* Elle est abstraite donc doit obligatoirement être étendue. |
*/ |
* Classe modèle, donc d'accés au données, elle ne devrait pas être appelée de l'extérieur. |
* Elle fait office d'abstraction légère de base de données en utilisant les objects PDO natifs |
* de PHP |
* Elle est abstraite donc doit obligatoirement être étendue. |
* |
* PHP Version 5 |
* |
* @category Class |
* @package Framework |
* @author aurelien <aurelien@tela-botanica.org> |
* @copyright 2009 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @version SVN: $$Id$$ |
* @link /doc/framework/ |
* |
*/ |
abstract class Modele { |
|
/** |
20,19 → 33,19 |
*/ |
private $gestionnaire_erreur; |
/** |
* DSN pour accéder à la base de données |
* DSN pour accéder à la base de données |
*/ |
private $dsn; |
/** |
* Type de base de données (mysql, mysqli, etc ...) |
* Type de base de données (mysql, mysqli, etc ...) |
*/ |
private $type; |
/** |
* Hote herbergeant la base de données |
* Hote herbergeant la base de données |
*/ |
private $hote; |
/** |
* Nom de la base de données à laquelle le modèle doit se connecter |
* Nom de la base de données à laquelle le modèle doit se connecter |
*/ |
private $bdd_nom; |
/** |
43,16 → 56,21 |
* Mot de passe |
*/ |
private $pass; |
|
/** |
* Encodage de la base de données |
*/ |
private $encodage = null; |
/** |
* Connexion à la base de données |
* Connexion à la base de données |
*/ |
private $connexion = null; |
|
/** |
* Constructeur par défaut, appelé à l'initialisation. |
* Constructeur par défaut, appelé à l'initialisation. |
*/ |
final public function __construct() { |
// les différents paramètres nécessaires sont lus à partir du registre |
// les différents paramètres nécessaires sont lus à partir du registre |
$this->registre = Registre::getInstance(); |
$this->gestionnaire_erreur = GestionnaireErreur::getInstance(); |
$this->type = Config::get('bdd_protocole'); |
60,6 → 78,7 |
$this->bdd_nom = Config::get('bdd_nom'); |
$this->utilisateur = Config::get('bdd_utilisateur'); |
$this->pass = Config::get('bdd_mot_de_passe'); |
$this->encodage = Config::get('bdd_encodage'); |
|
$this->dsn = $this->type.':dbname='.$this->bdd_nom.';host='.$this->hote; |
} |
67,11 → 86,11 |
/** |
* Fonction qui appelle la bonne fonction de requete suivant le type de bdd. |
* |
* @param string la requete à effectuer |
* @return PDOStatement un objet contenant le résultat de la requête |
* @param string la requete à effectuer |
* @return PDOStatement un objet contenant le résultat de la requête |
*/ |
final protected function requete($requete) { |
// on ne se connecte que lors du premier appel à une requete (lazy connexion) |
// on ne se connecte que lors du premier appel à une requete (lazy connexion) |
if ($this->connexion == null) { |
$this->connecter(); |
} |
79,16 → 98,19 |
} |
|
/** |
* Connection à la base de données en utilisant les informations fournies par |
* Connection à la base de données en utilisant les informations fournies par |
* le fichier de configuration. |
* private et final car n'a pas vocation a être appelée par l'utilisateur. |
* private et final car n'a pas vocation a être appelée par l'utilisateur. |
* |
* @throws PDOException une exception dans le cas ou là connexion échoue |
* @throws PDOException une exception dans le cas ou là connexion échoue |
*/ |
final private function connecter() { |
// TODO: retirer le try catch et laisser le problème au gestionnaire d'exceptions |
// TODO: retirer le try catch et laisser le problème au gestionnaire d'exceptions |
try { |
$this->connexion = new PDO($this->dsn, $this->utilisateur, $this->pass); |
$this->connexion = new PDO($this->dsn, $this->utilisateur, $this->pass); |
if($this->encodage != null) { |
$this->requete("SET names '".$this->encodage."'"); |
} |
} catch (PDOException $e) { |
|
} |
95,10 → 117,10 |
} |
|
/** |
* protège une chaine de caractères avant l'insertion dans la base de données |
* protège une chaine de caractères avant l'insertion dans la base de données |
*/ |
final protected function proteger($chaine) { |
// on ne se connecte que lors du premier appel à une requete |
// on ne se connecte que lors du premier appel à une requete |
if ($this->connexion == null) { |
$this->connecter(); |
} |