Subversion Repositories Applications.wikini

Rev

Blame | Last modification | View Log | RSS feed

<?php
// Auteur d'origine : Brian Lozier
// Source : http://www.massassi.com/php/articles/template_engines/

class SquelettePhp {
    private $vars; // Contient toutes les variables à insérer dans le squelette

    /**
    * Constructeur
    *
    * @param $fichier string le nom du fichier de template à charger.
    */
    public function __construct($fichier_tpl = null)
    {
        $this->fichier = $fichier_tpl;
    }

    /**
    * Ajout une variable pour le squelette.
    */
    public function set($nom, $valeur = null)
    {
        if (is_null($valeur) && is_array($nom)) {
            $this->vars = $nom;
        } else if ($valeur instanceof SquelettePhp) {
            $this->vars[$nom] = $valeur->analyser();
        } else {
            $this->vars[$nom] = $valeur;
        }
    }

    /**
    * Ouvre, parse, and retourne le squelette.
    *
    * @param $fichier string le nom du fichier squelette.
    */
    public function analyser($fichier = null)
    {
        if(!$fichier) $fichier = $this->fichier;
        extract($this->vars);          // Extrait les variables et les ajoutes à l'espace de noms local
        ob_start();                    // Démarre le buffer
        include($fichier);             // Inclusion du fichier
        $contenu = ob_get_contents();  // Récupérer le  contenu du buffer
        ob_end_clean();                // Arrête et détruit le buffer
        return $contenu;               // Retourne le contenu
    }
}
?>