Subversion Repositories Applications.framework

Compare Revisions

Ignore whitespace Rev 150 → Rev 151

/trunk/framework/Controleur.php
1,21 → 1,20
<?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 php5
* @package Framework
* @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
* @version SVN: $$Id$$
* @link /doc/framework/
*
* @category Class
* @package Framework
* @author aurelien <aurelien@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
* @version SVN: $$Id$$
* @link /doc/framework/
*
*/
abstract class Controleur {
/**
74,54 → 73,78
}
return $sortie;
}
 
/**
* 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)) {
return false ;
if (file_exists($chemin_squelette)) {
// Extraction des variables du tableau de données
extract($donnees);
// 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) {
// 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;
}
// Récupèration du contenu du buffer
$sortie = ob_get_contents();
// Suppression du buffer
@ob_end_clean();
}
 
$donnees['base_url'] = $this->registre->get('base_url_application');
 
// on extrait les variables du tableau de données
extract($donnees);
 
// et on enclenche 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))));
} else {
// sinon, on se contente d'inclure le squelette
include $chemin_squelette;
// Retour du contenu
return $sortie;
}
/**
* 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.
*/
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;
}
 
// on récupère le buffer et on le vide
$tampon = ob_get_contents();
@ob_end_clean();
 
// enfin on renvoie le contenu
$this->$nom_squelette = $tampon;
return $sortie;
}
 
/**
* Destructeur de classe, renvoie les exceptions s'il y en a
* 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.
*/
public function __destruct() {
GestionnaireException::getExceptions();
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;
}
}
?>