Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** Classe controlleur, coeur d'une application, c'est normalement la seule classe d'une application* qui devrait être appelée de l'extérieur.*/abstract class Controleur {private $registre;private $gestionnaire_erreur;/*** Constructeur par défaut*/final public function __construct() {$this->registre = Registre::getInstance() ;$this->registre->set('chemin_config',CHEMIN_APPLI.'configuration'.DIRECTORY_SEPARATOR);$this->registre->set('base_chemin_modele',DOSSIER_MODELES.DIRECTORY_SEPARATOR);$this->registre->set('base_chemin_squelette',DOSSIER_SQUELETTES.DIRECTORY_SEPARATOR);$this->registre->set('base_chemin_controleur',DOSSIER_CONTROLEURS.DIRECTORY_SEPARATOR);$this->registre->set('bdd_type',BDD_PROTOCOLE) ;$this->registre->set('bdd_hote',BDD_SERVEUR) ;$this->registre->set('bdd_nom',BDD_NOM_PRINCIPALE) ;$this->registre->set('bdd_utilisateur',BDD_UTILISATEUR) ;$this->registre->set('bdd_pass',BDD_MOT_DE_PASSE) ;$this->gestionnaire_erreur = GestionnaireErreur::getInstance();}/*** Charge un modele donné et le rend disponible sous la forme $this->nom_modele* @param $nom_modele le nom du modèle à charger*/final protected function chargerModele($nom_modele) {$chemin_modele = ($this->registre->get('base_chemin_modele')).$nom_modele.'.php';if(!file_exists($chemin_modele)) {return false ;}include_once($chemin_modele) ;if(!class_exists($nom_modele)) {return false ;}$this->$nom_modele = new $nom_modele ;}/*** Fonction prenant en paramètre le nom d'un squelette et un tableau associatif de données, en extrait les variables, charge le squelette* et cree une variable de classe contenant les deux combinés.* @param String le nom du squelette* @param Array un tableau associatif contenant les variables a injecter dans la vue**/final protected function chargerVue($nom_squelette,$donnees) {$chemin_squelette = ($this->registre->get('base_chemin_squelette')).$nom_squelette.'.tpl.html';if(!file_exists($chemin_squelette)) {return false ;}$donnees['base_url'] = $this->registre->get('base_url_application') ;// on extrait les variables du tableau de donnéesextract($donnees);// et on enclenche la bufferisation de sortieob_start();// si les tags courts sont désactivésif ((bool) @ini_get('short_open_tag') === FALSE){// on remplace les tags par la syntaxe classique avec echoecho eval('?>'.preg_replace("/;*\s*\?>/", "; ?>", str_replace('<?=', '<?php echo ', file_get_contents($chemin_squelette))));} else {// sinon, on se contente d'inclure le squeletteinclude($chemin_squelette);}// on récupère le buffer et on le vide$buffer = ob_get_contents();@ob_end_clean();// enfin on renvoie le contenu$this->$nom_squelette = $buffer;return $nom_squelette;}}?>