Overview

Packages

  • Framework
  • None
  • PHP
  • Utilitaire

Classes

  • Bdd
  • Cache
  • CacheSimple
  • Chronometre
  • Cli
  • Config
  • Controleur
  • Debug
  • Framework
  • GestionnaireException
  • I18n
  • Log
  • Registre
  • RestClient
  • RestServeur
  • RestService
  • Script
  • SquelettePhp
  • Url
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
  1: <?php
  2: // declare(encoding='UTF-8');
  3: /**
  4:  * Classe Controleur, coeur d'une application, c'est normalement la seule classe d'une application
  5:  * qui devrait être appelée de l'extérieur.
  6:  * Elle est abstraite donc doit obligatoirement être étendue.
  7:  *
  8:  * @category    php 5.2
  9:  * @package Framework
 10:  * @author      Aurélien PERONNET <aurelien@tela-botanica.org>
 11:  * @author      Jean-Pascal MILCENT <jpm@tela-botanica.org>
 12:  * @copyright   Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
 13:  * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
 14:  * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
 15:  * @version $Id: Controleur.php 332 2011-03-22 16:54:23Z delphine $
 16:  * @link        /doc/framework/
 17:  *
 18:  */
 19: abstract class Controleur {
 20:     /** Variable statique indiquant que les tableaux _GET et _POST ont déjà été encodé au format de l'appli. */
 21:     private static $encodage = false;
 22: 
 23:     /** Chemin de base vers les classes métiers de la partie Modèle de l'application. */
 24:     private $base_chemin_modele = null;
 25:     
 26:     /** Chemin de base vers les fichiers squelette de la partie Vue de l'application. */
 27:     private $base_chemin_squelette = null;
 28:     
 29:     /** Chemin de base vers les classes controleurs de la partie Controleur de l'application. */
 30:     private $base_chemin_controleur = null;
 31:     
 32:     /** Objet URL contant l'url de la base de l'application. */
 33:     private $base_url_applicaton = null;
 34: 
 35:     /** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/
 36:     protected $parametres_obligatoires = array('chemin_modeles', 'chemin_squelettes', 'chemin_controleurs', 'base_url_application');
 37:     
 38:     /**
 39:      * Constructeur par défaut
 40:      */
 41:     public function __construct() {
 42:         Config::verifierPresenceParametres($this->parametres_obligatoires);
 43:         $this->base_chemin_modele = Config::get('chemin_modeles');
 44:         $this->base_chemin_squelette = Config::get('chemin_squelettes');
 45:         $this->base_chemin_controleur = Config::get('chemin_controleurs');
 46:         $this->base_url_application = new Url(Config::get('base_url_application'));
 47:     }
 48: 
 49:     /**
 50:     * Charge un modele donné et le rend disponible sous la forme $this->nom_modele
 51:     *
 52:     * @param string $nom_modele le nom du modèle à  charger
 53:     *
 54:     * @return boolean false si le chargement a échoué, sinon true.
 55:     */
 56:     final public function chargerModele($nom_modele) {
 57:         $sortie = true;
 58:         if (!isset($this->$nom_modele)) {
 59:             $modele = $this->getModele($nom_modele);
 60:             if ($modele !== false) {
 61:                 $this->$nom_modele = $modele;
 62:             } else {
 63:                 $sortie = false;
 64:             }
 65:         }
 66:         return $sortie;
 67:     }
 68: 
 69:     /**
 70:     * Retourne un modele donné
 71:     *
 72:     * @param string $nom_modele le nom du fichier modèle à charger sans son extension
 73:     * @param String $ext            l'extension du fichier du modèel (par défaut : ".php"
 74:     *
 75:     * @return mixed false si le chargement a échoué, sinon l'objet du modèle demandé.
 76:     */
 77:     final protected function getModele($nom_modele, $ext = '.php') {
 78:         $sortie = false;
 79:         
 80:         $chemin_modele = $this->registre->get('base_chemin_modele').$nom_modele.$ext;
 81:         if (file_exists($chemin_modele)) {
 82:             include_once $chemin_modele;
 83:             if (class_exists($nom_modele)) {
 84:                 $sortie = new $nom_modele;
 85:             }
 86:         }
 87:         return $sortie;
 88:     }
 89: 
 90:     /**
 91:      * Fonction prenant en paramètre le nom d'un squelette et un tableau associatif de données,
 92:      * en extrait les variables, charge le squelette et retourne le résultat des deux combinés.
 93:      *
 94:      * @param String $nom_squelette le nom du squelette sans son extension
 95:      * @param Array  $donnees           un tableau associatif contenant les variables a injecter dans la vue
 96:      * @param String $ext               l'extension du fichier du squelette (par défaut : ".tpl.html"
 97:      *
 98:      * @return boolean false si la vue n'existe pas, sinon la chaine résultat.
 99:      */
100:     final protected function getVue($nom_squelette, &$donnees = array(), $ext = '.tpl.html') {
101:         $donnees = $this->preTraiterDonnees($donnees);
102:         
103:         $chemin_squelette = $this->base_chemin_squelette.$nom_squelette.$ext;
104:         $sortie = SquelettePhp::analyser($chemin_squelette, $donnees);
105: 
106:         return $sortie;
107:     }
108: 
109:     /**
110:      * Fonction prenant en paramètre un tableau de données et effectuant un traitement dessus.
111:      * Cette fonction est à surcharger dans les classes filles pour automatiser un traitement
112:      * avant chaque chargement de vue.
113:      *
114:      * @param Array $donnees Le tableau de données à traiter
115:      *
116:      * @return Array $donnees Le tableau de données traité
117:      */
118:     protected function preTraiterDonnees(&$donnees) {
119:         return $donnees;
120:     }
121: }
122: ?>
TBFramework - v0.3 API documentation generated by ApiGen 2.8.0