Page 1 sur 2

[Moteur de Template] Comment le faire démarer

Posté : 05 juin 2008, 07:32
par katagoto
Bonjour à tous, j'ai pour mission de créer un moteur de template sur-mesure pour un projet relativement important, je sais que ça ne sera pas facile, qu'il y aura tu sang à verser...

Le moteur devra se baser sur du XML, j'ai donc voulu comprendre avec Talus' TPL, basé lui aussi sur du XML, hor, il n'y a aucun parseur, est-ce normal ?
Pourquoi choisir XSLT à XML ?
Quand c'est écrit basé sur XML, cela veut-il dire que c'est une syntaxe XML-like ou pas ?

Merci par avance de vos réponses :lol:

Posté : 05 juin 2008, 11:37
par Victor BRITO
XSLT est une feuille de style XML permettant de transformer du XML soit en un XML obéissant à des formats spécifiques (RSS, Atom, MathML, SMIL, SVG...) soit en XHTML soit en tout autre format.

En PHP, il existe la classe XSLTProcessor, qui permet d'effectuer la transformation d'un document XML selon les instructions de la feuille XSLT.

Posté : 05 juin 2008, 13:08
par katagoto
Merci de ta réponse, mais tu ne donne pas ton opignon personnelle, qui serait interessante, pour moi en tout cas...

Posté : 05 juin 2008, 15:07
par Victor BRITO
Personnellement, je n'ai pas eu l'occasion d'utiliser un moteur de template, quel qu'il soit. Mais, l'approche XSLT mérite qu'on s'y intéresse, pour ce que j'ai dit précédemment. ;)

Posté : 05 juin 2008, 17:00
par katagoto
Tu ne t'ais jamais servit d'un moteur de template ? personne ne t'as forcé ? Les autres aussi peuvent répondrent à mes questions...

Posté : 05 juin 2008, 17:09
par Berzemus
smarty ? phptemplate ?

Le choix est vaste..

Posté : 05 juin 2008, 17:20
par katagoto
En fait j'essay de comprendre comment en faire un optimisé donc j'ai commencé par Talus' TPL, je pense que son système de preg est performant et je vais m'en inspirer... Si vous en avez de ce niveau ou légèrement plus hardue je prend, je ne connais pas phptemplate, est-il bien ? complexe ou dûr (niveau code) ? rapide ou lent ? Oui la liste est longue il doit bien y en avoir 200 sur la SF...

Posté : 05 juin 2008, 22:25
par Berzemus
Plus rapide que phptemplate, je doute.

Il part du constat que php est en fait déjà un langage de template à la base, et que donc il convient parfaitement pour l'utiliser en tant que tel.

Mes maigres expériences sur SF me permettent de dire que lui aussi utilise le php comme langage de template.

Ce qui est 100% sur, c'est qu'utiliser php comme langage de template sera ce qu'il y a de plus rapide. Un moteur de template avec des expression régulières doit quand même souffrir question temps de calcul..

Posté : 05 juin 2008, 23:13
par Hywan
Hey :),

Comme le dit bien Berzemus, un moteur de template qui se base sur des expressions régulières souffrent de beaucoup de chose.
Premièrement, on utilisera des expressions régulières, et pas des plus simples. J'avais fait un moteur de template dynamique (qui pouvait communiquer avec PHP) et crois moi, les expressions régulières étaient joyeuses. Tout ça a un coup, c'est évident.
Deuxièmement, l'utilisateur va devoir apprendre un pseudo-langage bâtard qui se situe maladroitement entre XML et PHP. Les programmeurs ne s'y retrouvent pas, les designers n'ont plus. Et je ne parle pas des variables qui doivent être pré-définies, avec documentation et convention de nommage ultra strict, nom de variables réservés, etc.
Enfin, à la base, PHP était fait pour ça non ? Pour un langage de template performant. Pourquoi vouloir changer ?

Tu as un autre choix ensuite, celui de XML et XSLT. Je ne l'ai jamais mis en place sur un serveur pour du temps réel, mais c'est très rapide. Beaucoup plus que si on utilisait des moteurs de template fait maison. De plus, XML a l'avantage de très bien se compresser et de très bien s'exporter. En effet, tu peux avoir une feuille XSLT pour transformer ton XML vers de l'HTML, mais également vers du PDF (via XSL-FO), ou du ManPage, etc. J'avais même fait ça pour une documentation Eclipse (eh oui …).
Dans l'absolu, le couple XML/XSLT est le plus intéressant. Si tu veux choisir PHP, ne prend que PHP et oublie l'invention d'un pseudo-langage bâtard :).

Posté : 06 juin 2008, 01:55
par Victor BRITO
Le seul inconvénient de l'approche XML/XSLT est le fait de devoir connaître XSLT. Mais, vu ce qu'on en tire, c'est un inconvénient passager. ;)

Posté : 06 juin 2008, 08:29
par savageman
A part qu'un truc un minimum optimisé n'effectue pas d'expression régulière à chauqe chargement o_o
Talus'TPL compile les pages en PHP une bonne fois pour toute et c'est la version compilée qui est utilisée. Le moteur s'occupe "seulement" de vérifier qu'une version plus récente n'existe pas et, le cas échéant, la compile pour l'utiliser.
Enfin, le système peut s'occuper d'une mise en cache éventuelle (mais j'ai pas c'est pas assez flexible je trouve, quoi que pour des trucs qui changent pas souvent ça le fait :) ).

Posté : 06 juin 2008, 08:35
par katagoto
Alors, j'ai téléchargé phptemplate, bon c'est méchant...
Les seuls choses que mon template contiendra seront : les boucles, les conditions, et l'affichage des variable, donc ce sera extrêment léger...je veux pas avoir à apprendre une lma fonctionnement usine à gaz...
Le problème de ne pas utiliser de template c'est que les designeur viennent embêter les codeurs pour qu'il modifient le html présent dans leurs echo alors qu'ils auraient pût le faire tout seul...Après, je dois faire un système proposant plusieurs langues et plusieurs organisations...Ensuite les graphistes ont du mal avec PHP...

Posté : 06 juin 2008, 08:55
par Hywan
Qui te dit que tu es obligé d'écrire tes balises avec PHP ? PHP peut s'immiscer entre :
<img src="<?php echo HTML_ROOT; ?>Media/Image/…" />
ou encore
<ul>
  <li><?php echo …; ?></li>
</ul>
Pour répondre à Savageman, si tu as un système avec de petites expressions régulières, ce ne sera pas trop gourmand certes, mais il y aura toujours cette histoire de langage extra-terrestre sorti de nul part et que personne ne connaît …

Posté : 06 juin 2008, 10:47
par savageman
Pour répondre à Savageman, si tu as un système avec de petites expressions régulières, ce ne sera pas trop gourmand certes, mais il y aura toujours cette histoire de langage extra-terrestre sorti de nul part et que personne ne connaît …
Tu peux même avoir des expressions régulières super lourdes, c'est pas le problème, vu que c'est recompilé qu'à chaque changement... :) Du reste, c'est aussi efficace que PHP seul. ;)

Par contre +200 pour le langage extra-teresstre ! :)

Posté : 06 juin 2008, 12:27
par katagoto
Bah c'est un langage adressé aux graphistes :lol:
De toutes façon tu es "obligé" d'utilisé un système de cache avec un système de templates, faut bien regagner les ressources que tu as perdu...oui pour le compilage ^^