Overview

Packages

  • Framework
  • PHP

Classes

  • Application
  • Chronometre
  • Config
  • Controleur
  • Debug
  • GestionnaireException
  • I18n
  • Log
  • Modele
  • Registre
  • SquelettePhp
  • Url

Functions

  • autoloadAppliDefaut
  • autoloadFw
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
 1: <?php
 2: // declare(encoding='UTF-8');
 3: /**
 4:  * Classe SquelettePhp, traitant les squelette Php utilisant la syntaxe courte php ou pas.
 5:  * Ces méthodes sont statiques.
 6:  *
 7:  * @category    PHP 5.2
 8:  * @package     Framework
 9:  * @author      Jean-Pascal MILCENT <jpm@tela-botanica.org>
10:  * @copyright   Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
11:  * @license     GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html>
12:  * @license     CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
13:  */
14: class SquelettePhp {
15: 
16:     /**
17:      * Fonction prenant en paramètre un chemin de fichier squelette et un tableau associatif de données,
18:      * en extrait les variables, charge le squelette et retourne le résultat des deux combinés.
19:      *
20:      * @param String $fichier   le chemin du fichier du squelette
21:      * @param Array  $donnees   un tableau associatif contenant les variables a injecter dans le squelette.
22:      *
23:      * @return boolean false si la vue n'existe pas, sinon la chaine résultat.
24:      */
25:     public static function analyser($fichier, Array $donnees = array()) {
26:         $sortie = false;
27:         if (file_exists($fichier)) {
28:             // Extraction des variables du tableau de données
29:             extract($donnees);
30:             // Démarage de la bufferisation de sortie
31:             ob_start();
32:             // Si les tags courts sont activés
33:             if ((bool) @ini_get('short_open_tag') === true) {
34:                 // Simple inclusion du squelette
35:                 include $fichier;
36:             } else {
37:                 // Sinon, remplacement des tags courts par la syntaxe classique avec echo
38:                 $html_et_code_php = self::traiterTagsCourts($fichier);
39:                 // Pour évaluer du php mélangé dans du html il est nécessaire de fermer la balise php ouverte par eval
40:                 $html_et_code_php = '?>'.$html_et_code_php;
41:                 // Interprétation du html et du php dans le buffer
42:                 echo eval($html_et_code_php);
43:             }
44:             // Récupèration du contenu du buffer
45:             $sortie = ob_get_contents();
46:             // Suppression du buffer
47:             @ob_end_clean();
48:         } else {
49:             $msg = "Le fichier du squelette '$fichier' n'existe pas.";
50:             trigger_error($msg, E_USER_WARNING);
51:         }
52:         // Retourne le contenu
53:         return $sortie;
54:     }
55: 
56:     /**
57:      * Fonction chargeant le contenu du squelette et remplaçant les tags court php (<?= ...) par un tag long avec echo.
58:      *
59:      * @param String $chemin_squelette le chemin du fichier du squelette
60:      *
61:      * @return string le contenu du fichier du squelette php avec les tags courts remplacés.
62:      */
63:     private static function traiterTagsCourts($chemin_squelette) {
64:         $contenu = file_get_contents($chemin_squelette);
65:         // Remplacement de tags courts par un tag long avec echo
66:         $contenu = str_replace('<?=', '<?php echo ',  $contenu);
67:         // Ajout systématique d'un point virgule avant la fermeture php
68:         $contenu = preg_replace("/;*\s*\?>/", "; ?>", $contenu);
69:         return $contenu;
70:     }
71: }
72: ?>
TBFramework - v0.2 API documentation generated by ApiGen 2.8.0