Mustache le moteur de templates PHP

Le 16/04/2013

Dans Développement

Découvrez Mustache, un moteur de template PHP, fonctionnant avec de nombreux langages, pour vos projets web.

Introduction

À force de travailler avec Ruby, on prend quelques habitudes qui rendent le passage sur PHP assez douloureux pour les projets qui le demandent. Le plus dur est de mettre au même endroit le markup HTML et le code PHP, car niveau lisibilité, on ne fait pas pire. Solution : les moteurs de templates.

Mustache

Mustache est un moteur de template logic-less disponible en de très nombreux langages, dont le PHP. Ce n’est pas le seul moteur de template PHP disponible, mais le fait qu’il soit logic-less rendant la séparation affichage-donnée obligatoire, en fait un excellent choix. De plus, Mustache étant compatible Javascript, si le site à besoin d’AJAX pour la suite, cela sera plus simple.

Mustache s’installe très simplement : on décompresse une archive, on inclut un fichier, et on déclare quelques paramètres de notre choix (ou bien on copie colle ceux de la doc, ça marche aussi). Voilà, Mustache est installé et fonctionnel, nous pouvons créer et afficher notre premier template.

echo $m->render('Hello, {{planet}}!', array('planet' => 'World')); // "Hello, world!"

Le premier paramètre est le nom du template ou le template en string et le second est un tableau de données à insérer dans la template.

 

Logic-less ?

Mustache est logic-less. Cela veut dire que vous ne pourrez pas mettre de PHP dans vos templates. Pas d’include, pas de if, pas de while ? Rassurez-vous, il est quand même possible d’utiliser des conditions et des boucles !

Il est possible d’insérer une variable avec {{ma_variable}}. Notez que les symboles sont échappés automatiquement. Pour éviter cela, utilisez {{{ma_variable}}}.

{{> ma_template}} importera une partial (une sorte de bout de template).

{{# ma_variable }} {{/ ma_variable}} est en quelque sorte l’outil à tout faire de Mustache : Si ma_variable n’existe pas, ce qui est entre les balises sera ignoré. Si ma_variable est un tableau, le contenu sera exécuté pour chacun des objets du tableau. 

Le fait que Mustache soit logic-less est donc contraignant sans être un obstacle. En fait, il permet de bien refléchir à la construction de la structure de données envoyée à la vue.

Conclusion

Simple à installer, plus rapide à apprendre que Smarty, et multi langage au possible, Mustache est un bon outil à avoir sous la main. Il vous permettra de garder votre code PHP séparé de votre HTML et vous oblige à une certaine rigueur malheureusement trop souvent absente de ce langage.