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 415 2012-04-04 09:05:55Z jpm $
 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: 
 44:         $this->base_chemin_modele = Config::get('chemin_modeles');
 45:         if (Registre::existe('tbf.chemin_modeles')) {
 46:             $this->base_chemin_modele = Registre::get('tbf.chemin_modeles');
 47:         }
 48: 
 49:         $this->base_chemin_squelette = Config::get('chemin_squelettes');
 50:         if (Registre::existe('tbf.chemin_squelettes')) {
 51:             $this->base_chemin_squelette = Registre::get('tbf.chemin_squelettes');
 52:         }
 53: 
 54:         $this->base_chemin_controleur = Config::get('chemin_controleurs');
 55:         if (Registre::existe('tbf.chemin_controleurs')) {
 56:             $this->base_chemin_squelette = Registre::get('tbf.chemin_controleurs');
 57:         }
 58: 
 59:         $this->base_url_application = new Url(Config::get('base_url_application'));
 60:     }
 61: 
 62:     /**
 63:      * Permet de récupérer le chemin vers les squelettes.
 64:      *
 65:      * @return String $chemin chemin vers les squelettes
 66:      */
 67:     protected function getCheminSquelette() {
 68:         return $this->base_chemin_squelette;
 69:     }
 70: 
 71:     /**
 72:      * Permet de définir dynamiquement le chemin vers les squelettes.
 73:      *
 74:      * @param String $chemin chemin vers les squelettes
 75:      */
 76:     protected function setCheminSquelette($chemin) {
 77:         $this->base_chemin_squelette = $chemin;
 78:     }
 79: 
 80:     /**
 81:     * Charge un modele donné et le rend disponible sous la forme $this->nom_modele
 82:     *
 83:     * @param string $nom_modele le nom du modèle à  charger
 84:     *
 85:     * @return boolean false si le chargement a échoué, sinon true.
 86:     */
 87:     public function chargerModele($nom_modele) {
 88:         $sortie = true;
 89:         if (!isset($this->$nom_modele)) {
 90:             $modele = $this->getModele($nom_modele);
 91:             if ($modele !== false) {
 92:                 $this->$nom_modele = new $nom_modele;
 93:             } else {
 94:                 $sortie = false;
 95:             }
 96:         }
 97:         return $sortie;
 98:     }
 99: 
100:     /**
101:     * Retourne un modele donné
102:     *
103:     * @param string $nom_modele le nom du fichier modèle à charger sans son extension
104:     * @param String $ext        l'extension du fichier du modèle (par défaut : ".php")
105:     *
106:     * @return mixed false si le chargement a échoué, sinon l'objet du modèle demandé.
107:     */
108:     protected function getModele($nom_modele, $ext = '.php') {
109:         $sortie = false;
110: 
111:         $chemin_modele = $this->registre->get('base_chemin_modele').$nom_modele.$ext;
112:         if (file_exists($chemin_modele)) {
113:             include_once $chemin_modele;
114:             if (class_exists($nom_modele)) {
115:                 $sortie = new $nom_modele;
116:             }
117:         }
118:         return $sortie;
119:     }
120: 
121:     /**
122:      * Fonction prenant en paramètre le nom d'un squelette et un tableau associatif de données,
123:      * en extrait les variables, charge le squelette et retourne le résultat des deux combinés.
124:      *
125:      * @param String $nom_squelette le nom du squelette sans son extension si elle vaut ".tpl.html"
126:      * @param Array  $donnees       un tableau associatif contenant les variables a injecter dans la vue
127:      * @since 0.4 suppression du paramètre 'ext' => le mettre directement dans le nom du squelette
128:      *
129:      * @return boolean false si la vue n'existe pas, sinon la chaine résultat.
130:      */
131:     protected function getVue($nom_squelette, $donnees = array()) {
132:         $donnees = $this->preTraiterDonnees($donnees);
133:         $chemin_squelette = $this->base_chemin_squelette.$nom_squelette.'.tpl.html';
134:         if (file_exists($chemin_squelette) === false) {
135:             $chemin_squelette = $this->base_chemin_squelette.$nom_squelette;
136:         }
137:         $sortie = SquelettePhp::analyser($chemin_squelette, $donnees);
138: 
139:         return $sortie;
140:     }
141: 
142:     /**
143:      * Fonction prenant en paramètre un tableau de données et effectuant un traitement dessus.
144:      * Cette fonction est à surcharger dans les classes filles pour automatiser un traitement
145:      * avant chaque chargement de vue.
146:      *
147:      * @param Array $donnees Le tableau de données à traiter
148:      *
149:      * @return Array $donnees Le tableau de données traité
150:      */
151:     protected function preTraiterDonnees(&$donnees) {
152:         return $donnees;
153:     }
154: }
155: ?>
API documentation generated by ApiGen 2.8.0