Subversion Repositories Applications.papyrus

Rev

Rev 2052 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php

abstract class Modele {

        private $registre;
        private $gestionnaire_erreur;
        private $dsn;
        private $type;
        private $hote;
        private $bdd_nom;
        private $utilisateur;
        private $pass ;
        private $connexion = null;

        /**
         * Constructeur par défaut, appelé à l'initialisation
         */
    final public function __construct() {
        
        $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
        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() {
                
                try {
                    $this->connexion = new PDO($this->dsn,$this->utilisateur,$this->pass);
                } catch (PDOException $e) {

                }
    }
    
    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 ;
        }
    }
}
?>