Subversion Repositories Applications.framework

Compare Revisions

Ignore whitespace Rev 104 → Rev 105

/trunk/framework/Modele.php
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();
}