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