mirror of
https://github.com/smarty-php/smarty.git
synced 2025-10-29 11:21:36 +01:00
78 lines
4.5 KiB
Plaintext
78 lines
4.5 KiB
Plaintext
|
|
<preface id="preface">
|
|||
|
|
<title>Pr<50>face</title>
|
|||
|
|
<para>
|
|||
|
|
"Comment rendre mes scripts PHP ind<6E>pendants de la pr<70>sentation ?".
|
|||
|
|
Voici sans doute la question la plus pos<6F>e sur la mailing list
|
|||
|
|
PHP. Alors que PHP est <20>tiquet<65> "langage de script
|
|||
|
|
pour HTML", on se rend vite compte, apr<70>s quelques projets qui m<>langent
|
|||
|
|
sans complexe HTML et PHP, que la s<>paration entre la forme et
|
|||
|
|
le contenu est important. De plus, dans de nombreuses entreprises
|
|||
|
|
les r<>les du designer et du programmeur sont distincts. La solution template
|
|||
|
|
coule donc de source.
|
|||
|
|
</para>
|
|||
|
|
<para>
|
|||
|
|
Dans notre entreprise par exemple, le d<>veloppement d'une application
|
|||
|
|
se fait de la mani<6E>re suivante : une fois le cahier des charges <20>crit,
|
|||
|
|
le designer r<>alise une maquette, et donne ses interfaces
|
|||
|
|
au programmeur. Le programmeur impl<70>mente les fonctionnalit<69>s applicatives
|
|||
|
|
et utilise les maquettes pour faire des squelettes de templates. Le projet
|
|||
|
|
est alors pass<73> au designer HTML/responsable de la mise en page qui am<61>ne les
|
|||
|
|
templates jusqu'au fa<66>te de leur gloire. Il est possible que le projet fasse
|
|||
|
|
une fois ou deux des allers/retours entre la programmation et la pr<70>sentation.
|
|||
|
|
En cons<6E>quence, il est important de disposer d'un bon syst<73>me de template. Les
|
|||
|
|
programmeurs ne veulent pas avoir <20> faire au HTML, et ne veulent pas non plus
|
|||
|
|
que les designers HTML bidouillent le code PHP. Les designers ont besoin d'outils
|
|||
|
|
comme des fichiers de configuration, des blocs dynamiques et d'autres solutions
|
|||
|
|
pour r<>pondre <20> des probl<62>matiques d'interface, mais ne veulent pas
|
|||
|
|
n<>cessairement avoir <20> faire <20> toutes les subtilit<69>s de la programmation PHP.
|
|||
|
|
</para>
|
|||
|
|
<para>
|
|||
|
|
Un rapide tour d'horizon des solutions type template aujourd'hui et
|
|||
|
|
l'on s'aper<65>oit que la plupart d'entre elles n'offrent que des moyens
|
|||
|
|
rudimentaires pour substituer des variables dans des templates, ainsi que des
|
|||
|
|
fonctionnalit<69>s limit<69>es de blocs dynamiques. Cependant nous avons
|
|||
|
|
besoin d'un peu plus. Nous ne voulons pas que les programmeurs
|
|||
|
|
s'occupent de la pr<70>sentation HTML du TOUT, mais cela est pratiquement
|
|||
|
|
in<69>vitable. Par exemple, si un designer veut des couleurs d'arri<72>re plan
|
|||
|
|
diff<66>rentes pour alterner entre diff<66>rents blocs dynamiques, il est n<>cessaire
|
|||
|
|
que ce dernier travaille avec le programmeur. Nous avons aussi besoin que les
|
|||
|
|
designers soient capables de travailler avec leurs propres fichiers
|
|||
|
|
de configuration pour y r<>cup<75>rer des variables, exploitables dans leurs
|
|||
|
|
templates. Et la liste est longue.
|
|||
|
|
</para>
|
|||
|
|
<para>
|
|||
|
|
Fin 1999, nous avons commenc<6E> <20> <20>crire une sp<73>cification pour un moteur de
|
|||
|
|
template. Une fois la sp<73>cification termin<69>e,
|
|||
|
|
nous avons commenc<6E> <20> travailler sur un moteur de template <20>crit
|
|||
|
|
en C qui pourrait, avec un peu de chance, <20>tre inclus <20> PHP.
|
|||
|
|
Non seulement nous avons rencontr<74> des probl<62>mes techniques complexes,
|
|||
|
|
mais nous avons particip<69>s <20> de nombreux d<>bats sur ce que devait
|
|||
|
|
et ce que ne devait pas faire un moteur de template. De cette exp<78>rience nous avons
|
|||
|
|
d<>cid<69> qu'un moteur de template se devait d'<27>tre <20>crit sous la forme d'une
|
|||
|
|
classe PHP, afin que quiconque puisse l'utiliser <20> sa convenance. Nous
|
|||
|
|
avons donc r<>alis<69> un moteur de template qui se contentait de faire cela,
|
|||
|
|
et <productname>SmartTemplate</productname> a vu le jour (note : cette
|
|||
|
|
classe n'a jamais <20>t<EFBFBD> soumise au public). C'<27>tait une classe qui
|
|||
|
|
faisait pratiquement tout ce que nous voulions : substitution de variables,
|
|||
|
|
inclusion d'autres templates, int<6E>gration avec des fichiers de configuration,
|
|||
|
|
int<6E>gration de code PHP, instruction 'if' basique et une gestion plus robuste
|
|||
|
|
des blocks dynamiques imbriqu<71>s. Elle faisait tout cela avec des expressions
|
|||
|
|
rationnelles et le code se r<>v<EFBFBD>la, comment dire, imp<6D>n<EFBFBD>trable. De plus, elle <20>tait
|
|||
|
|
relativement lente pour les grosses applications <20> cause de l'analyse
|
|||
|
|
et du travail sur les expressions rationnelles qu'elle devait faire <20> chaque
|
|||
|
|
ex<65>cution. Le plus gros probl<62>me du point de vue du programmeur <20>tait
|
|||
|
|
tout le travail n<>cessaire en amont, dans le script PHP, pour configurer
|
|||
|
|
et ex<65>cuter les templates, et les blocs dynamiques. Comment rendre tout ceci
|
|||
|
|
plus simple ?
|
|||
|
|
</para>
|
|||
|
|
<para>
|
|||
|
|
Puis vint la vision de ce que devait devenir Smarty. Nous
|
|||
|
|
savons combien le code PHP peut <20>tre rapide sans le co<63>t
|
|||
|
|
d'analyse des templates. Nous savons aussi combien fastidieux
|
|||
|
|
et d<>courageant peut para<72>tre le langage pour le designer moyen, et que
|
|||
|
|
cela peut <20>tre remplac<61> par une syntaxe sp<73>cifique, beaucoup
|
|||
|
|
plus simple. Et si nous combinions les deux forces ? Ainsi, Smarty
|
|||
|
|
<20>tait n<>...
|
|||
|
|
</para>
|
|||
|
|
</preface>
|