Files
smarty/docs/fr/preface.sgml

78 lines
4.5 KiB
Plaintext
Raw Normal View History

2003-04-30 18:48:44 +00:00
<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>