1,15 → 1,14 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* classe Controleur, coeur d'une application, c'est normalement la seule classe d'une application |
* Classe Controleur, coeur d'une application, c'est normalement la seule classe d'une application |
* qui devrait être appelée de l'extérieur. |
* Elle est abstraite donc doit obligatoirement être étendue |
* Elle est abstraite donc doit obligatoirement être étendue. |
* |
* PHP Version 5 |
* |
* @category Class |
* @category php5 |
* @package Framework |
* @author aurelien <aurelien@tela-botanica.org> |
* @author Aurélien PERONNET <aurelien@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@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 |
77,51 → 76,75 |
|
/** |
* 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. |
* en extrait les variables, charge le squelette et retourne le résultat des deux combinés. |
* |
* @param String $nom_squelette le nom du squelette |
* @param Array $donnees un tableau associatif contenant les variables a injecter dans la vue |
* |
* @return boolean false si la vue n'existe pas, rien sinon |
* @return boolean false si la vue n'existe pas, sinon la chaine résultat. |
*/ |
final protected function chargerVue($nom_squelette,$donnees) { |
final protected function getVue($nom_squelette, $donnees = array()) { |
$sortie = false; |
$chemin_squelette = ($this->registre->get('base_chemin_squelette')).$nom_squelette.'.tpl.html'; |
if (file_exists($chemin_squelette)) { |
|
if (!file_exists($chemin_squelette)) { |
return false ; |
} |
|
$donnees['base_url'] = $this->registre->get('base_url_application'); |
|
// on extrait les variables du tableau de données |
// Extraction des variables du tableau de données |
extract($donnees); |
|
// et on enclenche la bufferisation de sortie |
// Démarage de la bufferisation de sortie |
ob_start(); |
|
// si les tags courts sont désactivés |
if ((bool) @ini_get('short_open_tag') === false) { |
// on remplace les tags par la syntaxe classique avec echo |
echo eval('?>'.preg_replace("/;*\s*\?>/", "; ?>", str_replace('<?=', '<?php echo ', file_get_contents($chemin_squelette)))); |
// Remplacement des tags courts par la syntaxe classique avec echo |
echo eval('?>'.$this->traiterTagsCourts($chemin_squelette)); |
} else { |
// sinon, on se contente d'inclure le squelette |
include $chemin_squelette; |
} |
|
// on récupère le buffer et on le vide |
$tampon = ob_get_contents(); |
// Récupèration du contenu du buffer |
$sortie = ob_get_contents(); |
// Suppression du buffer |
@ob_end_clean(); |
} |
|
// enfin on renvoie le contenu |
$this->$nom_squelette = $tampon; |
// Retour du contenu |
return $sortie; |
} |
|
/** |
* Destructeur de classe, renvoie les exceptions s'il y en a |
* 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 crée une variable de classe portant le nom du squelette |
* contenant les deux combinés. |
* |
* @param String $nom_squelette le nom du squelette |
* @param Array $donnees un tableau associatif contenant les variables a injecter dans la vue |
* |
* @return boolean false si la vue n'existe pas, sinon true. |
*/ |
public function __destruct() { |
GestionnaireException::getExceptions(); |
final protected function chargerVue($nom_squelette, $donnees = array()) { |
$sortie = false; |
$rendu = $this->getVue($nom_squelette, $donnees); |
if ($rendu !== false) { |
// Création d'une variable de classe contenant le rendu |
$this->$nom_squelette = $rendu; |
$sortie = true; |
} |
return $sortie; |
} |
|
/** |
* Fonction chargeant le contenu du squelette et remplaçant les tags court php (<?= ...) par un tag long avec echo. |
* |
* @param String $chemin_squelette le chemin du fichier du squelette |
* |
* @return string le contenu du fichier du squelette php avec les tags courts remplacés. |
*/ |
private function traiterTagsCourts($chemin_squelette) { |
$contenu = file_get_contents($chemin_squelette); |
// Remplacement de tags courts par un tag long avec echo |
$contenu = str_replace('<?=', '<?php echo ', $contenu); |
// FIXME : à quoi sert ce deuxième remplacement? |
$contenu = preg_replace("/;*\s*\?>/", "; ?>", $contenu); |
return $contenu; |
} |
} |
?> |