03 février 2005

Template PHP

Les templates sont un peu le graal, ou plus modestement la marotte de beaucoup de développeurs PHP.
Il faut dire que la séparation couche présentation/couche métier, est un idéal que d'aucuns voudraient
atteindre (je sais, c'est bien dit ;-))

La solution la plus connue est Smarty. Beaucoup de fonctionnalités, mais ce qui m'a toujours gêné, c'est qu'il
faille apprendre la syntaxe Smarty en plus de celle de PHP, ce qui fait un peu du travail en double.

J'ai ensuite regardé du côté de VTemplate, qui était un peu moins usine à gaz que Smarty, et qui pouvait gérer
les pages en cache.

J'ai utilisé quelques temps cette solution, mais j'ai été rapidement convaincu par l'arguemnt de certains, qui
trouvaient que ces solutions, complexifiaient le code, et qu'elles mettaient en avant un autre langage de script,
alors même que PHP est un langage de script puissant. Là encore, pourquoi faire les choses en double?

Et voici aujourd'hui ce que j'ai trouvé: Savant.

Un exemple vaut mieux qu'un long discours :

example.tpl.php

< ? loadTemplate('header.tpl.php') ?>
<>This is the main body of my template. Hello, name ?>!
< ? loadTemplate('footer.tpl.php') ?>

Et voici le script de logique métier associé :



< ?php require_once 'Savant2.php'; $tpl =& new Savant2(); $tpl->assign('name', 'Fester Addams');
$tpl->display('example.tpl.php');
? >

C'est d'une simplicité désarmante non?

Ici, nous avons une solution de template, 100% PHP (il existe des "plugins", permettant de ne pas coder des balises HTML tel que form mais elles sont tout à fait optionnelles), et qui sépare bel et bien la présentation de la partie métier.

De plus, on peut très bien passer par des subtemplates, pour créer les briques header, footer de son site.

Aucun commentaire: