A quoi sert un moteur de template pour PHP ?

En lisant des articles comme ça, je me demande bien pourquoi certains utilisent un moteur de template pour PHP. PHP n’est il pas lui même excellent dans ce domaine ?
Je suis sur qu’il me manque un élément dans ma réflexion, si vous l’avez, merci d’éclairer ma lanterne !

Publicités

11 réflexions au sujet de « A quoi sert un moteur de template pour PHP ? »

  1. NiCoS

    Pour éviter de réinventer la roue peut être ? Puisque par défaut le moteur de template va inclure des mécanismes de cache, connexion à des DB, etc.

    Autant la logique de template pour un applicatif donné (dotclear, spip, etc) ne me gène pas trop dans la mesure où cela offre un moyen de mettre la logique métier du soft à la disposition de ses utilisateurs. Autant un mécanisme générique (comme smarty) par ex me laisse plus sceptique. Pour un développeur de soft, il va devoir concilier la logique de son appli avec celle du moteur de template retenu…

    Dans un sens je pense que la logique d’un moteur de template pour PHP est un peu la même que la logique de fournir un framework. Après tout, dans l’absolu, pourquoi prendre Symfony / CakePHP / … alors que tu pourrais tout faire toi même en PHP…

    Répondre
  2. Damien

    Euh moi, c’est la tienne de réflexion que je ne comprends pas 🙂
    Un moteur de template PHP permet de faire un début de séparation du code et de la présentation.

    Après, avec les nombreux frameworks qui existent, un moteur de templates n’est pas forcément utile vu qu’ils en implémentent tous un.
    Mais tout développeur peut préférer implémenter sa propre structure, c’est son choix.

    Si par ne pas comprendre l’intérêt d’un moteur de templates, tu veut dire que tu n’utilise rien. Ni moteur, ni framework (ce dont je doute cependant) alors la, c’est vraiment toi que je ne comprends pas 🙂

    Répondre
  3. Olivier Mansour

    Merci pour vos retours

    @Nicos : si on utilise un moteur de template pour te connecter à ta DB on est clairement à coté de MVC ce qui est bien dommage aujourd’hui. Je ne suis pas 100% d’accord avec toi sur le fait que cela peut être utile dans le cas d’un applicatif comme SPIP mais c’est vrai que du point de vue de l’intégrateur cela peut paraître plus simple.

    @Damien : je me suis sûrement mal exprimé, je ne critique pas le concept de template, je critique le fait de ne pas utiliser PHP pour le faire, ou plutôt le fait de surcharger PHP d’un autre langage imposant d’autres concepts. D’ailleurs, la casi totalité des frameworks PHP5 utilisent PHP pour leur système de vues.

    A ce propos, je vous conseille la lecture ce vieil article :
    http://lutt.se/blog/2006/08/13/why-template-engines-like-smarty-sucks-in-php.html

    Répondre
  4. NiKo

    Olivier, je pense que l’intérêt principal d’un moteur de template est *d’imposer* la séparation entre la gestion de la présentation et le reste des activités de développement ; en effet, en utilisant PHP comme moteur de templates, tu autorises l’intégrateur ou le développeur à coder n’importe quoi puisqu’il dispose alors de toute la puissance du langage pour mettre à mal une architecture MVC par exemple.

    Chez Sensio en audit on prend peur en voyant certains abus dans les templates symfony, genre des instanciationsde Criteria Propel ou carrément de l’algorhythmique…

    Je pense d’ailleurs qu’en symfony 2 nous aurons par défaut un moteur de templates du type de celui qui existe chez Django, tout en conservant la possibilité d’utiliser PHP pour ceux qui maîtrisent entièrement la compétence des intervenants sur la couche présentation.

    Répondre
  5. NiCoS

    … et accessoirement, ça permet à ce que l’intégrateur n’ait pas nécessairement de compétences PHP… tu peux faire des boucles SPIP sans la moindre connaissance de PHP, idem pour Django (même si la logique est assez pythonique à certains égards) 😉

    Pour revenir sur la partie DB, tout dépend ou tu mets la frontière entre template et le reste… C’est juste que je ai lu ce point en lisant la liste des 19 moteurs énoncés… C’est clair que c’est pas le meilleur exemple de fonctionnalités d’un moteur de template… 😛

    Répondre
  6. Damien

    A mon avis, le premier point est celui soulevé par NiKo à savoir imposer la séparation vue/traitements même si certains développeurs trouvent quand même le moyen de faire des trucs horribles en implémentant des opérateurs de templates complètement aberrants (je le vois souvent sur des projets eZ Publish par exemple).

    Sinon un moteur de template peut aussi dans certains cas apporter une sécurité supplémentaire comme c’est le cas par exemple avec le composant Template des eZ Components. En effet, à l’initialisation du moteur de template, on lui passe un « context » qui va être chargé « d’échapper » les données sorties par le template, ainsi avec le contexte « xhtml », les variables affichées par le template sont systématiquement passées par la fonction htmlspecialchars() sauf demande contraire par le développeur ce qui permet de réduire la possibilité de faille par XSS par exemple.

    Répondre
  7. Olivier Mansour

    Merci Damien pour ton éclairage. Je suis également d’acc avec NiKo.

    Le mécanisme que tu décris pour eZP est sensiblement le même que celui mis en place par Symfony, toutefois il affecte la partie contrôleur et permet encore d’utiliser la syntaxe PHP dans le template. Perso je trouve le mécanisme de template de eZP carrément infâme ;-).

    Répondre
  8. Romain BOYER

    Olivier,

    tu t’entendrais bien avec un contact à moi dont un des contacts, ex-contributeur de Zend, a monté le Framework SolarPHP. Je te conseille de regarder de ce côté-là, tu pourrais aimer 😉

    Rom’s

    Répondre
  9. Romain BOYER

    Remarque, j’ai vu que tu faisais un lien vers cette page qui pointe vers Savant3, qui est justement le moteur de template best-used avec SolarPHP, c’est ce moteur-là que tu dois affectionner j’imagine 🙂

    Répondre

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s