Posté le Apr 29 2010, 10:20 par Khaz - [Permalien]
tags :
informatique,
php,
web,
Voici quelques années, en 2004 pour être précis, un moteur de templates léger, nommé VTemplate voyait son développement stoppé, avec une simple compatibilité pour PHP5, mais ne correspondant pas aux standards de code objet en PHP5.
J'ai récemment redéveloppé ce moteur "from scratch", afin de le rendre conforme aux standards de code de PHP5.3. Il n'est d'ailleurs compatible qu'avec cette version, puisqu'il utilise les namespaces, disponibles à compter de cette version.
Pour plus d'informations, les sources de YAMTE (pour Yet Another Minimalistic Template Engine) sont disponibles sur github, à l'adresse http://github.com/khazou/yamte
Ci-dessous, un petit tutoriel pour l'utilisation basique de ce moteur de templates.
Instanciation du moteur de templates dans le code PHP
monfichier.php
<?php
require_once('chemin/de/Yamte.php');
try {
$tpl = new yamte\Yamte('chemin/du/template.tpl');
// Ici vient le code lié à l'affichage des variables ou des contextes
$tpl->display();
} catch (yamte\YAException $e) {
echo $tpl->getTraceData();
}
Ajout des variables à valoriser
template.tpl
<h1>{#titre}</h1>
<div>{#contenu}</div>
monfichier.php
// A l'intérieur du bloc try/catch entre l'instanciation de la classe Yamte et
// l'affichage par la méthode display()
$tpl->setVariable('titre', 'Mon titre');
$tpl->setVariable('contenu', '<p>Lorem ipsum dolor sit amet...</p>');
Gestion des contextes
Les contextes permettent d'afficher ou non des données situées entre deux balises nommées. Comme un petit exemple vaut mieux qu'un long discours, voici l'exemple d'implémentation.
template.tpl
<!--YAT_nom_du_contexte-->
<p>{#variable_du_contexte}</p>
<!--/YAT_nom_du_contexte-->
monfichier.php
$arrayVars = ('pomme', 'poire', 'pêche');
foreach ($arrayVars as $var) {
$tpl->openContext('nom_du_contexte');
$tpl->setVariable('nom_du_contexte.variable_du_contexte', $var);
$tpl->closeContext('nom_du_contexte');
}
Dans les contextes, il faut impérativement préfixer les noms de variables par le nom du contexte dans la fonction setVariable.
Dans le cas où vous auriez d'éventuelles questions, laissez des commentaires ici ou sur github !