New file |
0,0 → 1,122 |
<?php |
/** |
* 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. |
*/ |
abstract class Modele { |
|
/** |
* registre global |
*/ |
private $registre; |
/** |
* Gestionnaire d'exceptions php |
*/ |
private $gestionnaire_exception; |
/** |
* Gestionnaire d'erreurs php |
*/ |
private $gestionnaire_erreur; |
/** |
* DSN pour accéder à la base de données |
*/ |
private $dsn; |
/** |
* Type de base de données (mysql, mysqli, etc ...) |
*/ |
private $type; |
/** |
* Hote herbergeant la base de données |
*/ |
private $hote; |
/** |
* Nom de la base de données à laquelle le modèle doit se connecter |
*/ |
private $bdd_nom; |
/** |
* Nom d'utilisateur |
*/ |
private $utilisateur; |
/** |
* Mot de passe |
*/ |
private $pass; |
/** |
* Connexion à la base de données |
*/ |
private $connexion = null; |
|
/** |
* Constructeur par défaut, appelé à l'initialisation |
*/ |
final public function __construct() { |
|
// les différents paramètres nécessaires sont lus à partir du registre |
$this->registre = Registre::getInstance(); |
$this->gestionnaire_erreur = GestionnaireErreur::getInstance(); |
$this->type = $this->registre->get('bdd_type'); |
$this->hote = $this->registre->get('bdd_hote'); |
$this->bdd_nom = $this->registre->get('bdd_nom'); |
$this->utilisateur = $this->registre->get('bdd_utilisateur'); |
$this->pass = $this->registre->get('bdd_pass'); |
|
$this->dsn = $this->type.':dbname='.$this->bdd_nom.';host='.$this->hote; |
} |
|
/** |
* 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 |
*/ |
final protected function requete($requete) { |
|
// on ne se connecte que lors du premier appel à une requete (lazy connexion) |
if($this->connexion == null) { |
$this->connecter(); |
} |
|
return $this->connexion->query($requete); |
} |
|
/** |
* Connecte à 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 |
* @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 |
try { |
$this->connexion = new PDO($this->dsn,$this->utilisateur,$this->pass); |
} catch (PDOException $e) { |
|
} |
} |
|
/** |
* 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 |
if($this->connexion == null) { |
$this->connecter(); |
} |
|
return $this->connexion->quote($chaine); |
} |
|
/** |
* Destructeur de classe, se contente de fermer explicitement la connexion |
*/ |
final public function __destruct() { |
|
if($this->connexion != null) { |
$this->connexion = null ; |
} |
} |
} |
?> |
Property changes: |
Added: svn:keywords |
+Id Author Date Revision HeadURL |
\ No newline at end of property |