Utilité des langages de templates en PHP

Les langages de templates sont apparus en PHP il y a près de 10 ans. Leur utilisation s’est répandu, mais sont-ils vraiment utiles ? PHP n’est il pas par définition un langage de template ?

Pourquoi cette bête étrange ?

L’objectif initial est de séparer la couche de présentation de la couche applicative. Leurs fervents défenseurs mettent en avant la simplicité de la syntaxe pour les templates, et le fait que les limitations imposées par les structures du langage permettent de garantir cette stricte séparation.

Cependant, le prix à payer est disproportionné.

Compilation de templates

La compilation de template est un abus langage, on devrait plutôt parler de transformation en langage interprété. Je connais à ce jour aucun système de template qui est compilé au sens strict du terme, ce sont uniquement des fichiers PHP qui sont générés.

Le coût de cette opération est important, il nécessite de mettre en cache, généralement des fichiers, le code ainsi généré. Une modification dans le template implique de facto la “recompilation” du template. L’accès aux ressources externes peut parfois poser des problèmes. Prenons l’exemple d’un fichier de configuration, on lit les données et on les utilise dans le template. On change ces données de configuration, est ce que les données sont stockés directement dans le template, et donc nécessite une “recompilation”, où sont ils sont réinterprétés lors de l’exécution du template ? Pas de réponse absolue dans ces cas là, cela dépend du moteur de template, et parfois même de la ressource utilisée. Le cout de compilation d’un template peut parfois être prohibitif, il est difficilement concevable d’aller recompiler les templates sur un site en production. Dans notre cas, une donnée de configuration affectant l’ensemble des templates nécessiterait la recompilation de tous les templates. Prendrez vous ce risque sur un site à fort traffic ?

Une syntaxe simplifiée

L’argument de vente des langages de template est la syntaxe simplifié qu’elle offre. Mais ici, on a affaire à une légende urbaine. PHP est historiquement un langage de template, c’est d’ailleurs ce qui a fait son succés.

Excepté, les balises d’ouvertures, on trouve peu de différences dans les structures de contrôles. La richesse fonctionnelle est généralement plus restreinte. Cependant, on trouve beaucoup plus d’outils qui permettent de manipuler du PHP qu’un langage de templates quel qu’il soit. J’ai n’ai pas vu à ce jour un module pour les templates avec une intelligence de code suffisante dans les éditeurs classiques de tout développeur (Eclipse, jEdit, vim, emacs, …). Par contre, ces modes existent bien pour PHP. Donc, sur l’édition du code , il est difficile d’avoir un gain de productivité. Personnellement, je constate plutôt une baisse.

Séparation contrôle / présentation

Le dernier argument que j’ai entendu en faveur des moteurs de template, et qu’il oblige à la séparation stricte entre le contenu et la présentation. Il est vrai que la limitation fonctionnelle ne permet pas de faire des traitements sur les données, mais cette limitation est tellement forte qu’il souvent plus simple de pré-macher le travail au niveau du contrôleur(ou de passer par des helpers) pour ne pas avoir à trouver des combines dans le langage de templates. A contrario, cette non-limitation en PHP a son revers, il est possible de mettre de la logique de traitement dans les templates, mais le bon sens l’emporte généralement.

Après avoir étudié tous les arguments des défenseurs, des langages de templates écrit en PHP, je n’y vois toujours pas un seul avantage.

Voir aussi

A la une
  • Rencontre du numérique 2019 - Nîmes
  • référencement naturel d'un hôtel
  • Développeur eZ Platform
  • Tech lead Symfony
  • Expert Qualité Web

Copyright - Sylvain FIX

2009 - 2019