IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[XSLT][Templates][PHP] Que choisir pour gérer ses templates [Débat]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut [XSLT][Templates][PHP] Que choisir pour gérer ses templates
    Bonjour,

    Je programme depuis un moment en php+xhtml1.0 strict+css+MySQL. J'aimerais séparer le PHP de mon code xhtml, pour plus de lisibilité (surtout pour des gros sites comme ceux de e-commerce). J'utiliserais toujours MySQL pour tout ce qui est gestion des données (membres, commandes, etc). J'utilise aussi un petit peu le XML pour les flus RSS.

    Je me suis d'abord penché sur les moteurs de templates (entre autres Litetemplate), puis j'ai découvert XSLT, qui pourrait visiblement aussi faire l'affaire.

    Sachant que je compte en profiter pour passer à php5 (pour coder en objet, et lire plus facilement les fichiers XML grace à simplexml pour mes flux RSS), que me conseilleriez-vous pour générer mes templates?

    J'ai lu quelque part (sur ce forum il me semble) que XSLT avait comme défaut d'être lent. Est-il vraiment plus lent qu'un moteur de templates simple? En termes d'utilisation, lequel est le plus pratique? Lequel a le plus d'avenir? Enfin, l'un des deux ne poserait-il pas problème pour son utilisation avec php5?

    Merci d'avance pour vos réponses

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    Citation Envoyé par ChriGoLioNaDor
    J'ai lu quelque part (sur ce forum il me semble) que XSLT avait comme défaut d'être lent. Est-il vraiment plus lent qu'un moteur de templates simple? En termes d'utilisation, lequel est le plus pratique? Lequel a le plus d'avenir? Enfin, l'un des deux ne poserait-il pas problème pour son utilisation avec php5?
    C'est une question qui pour être sérieusement abordée nécessiterait un article de plusieurs pages... Quelques éléments de réflexion, tout de même :

    XSLT est effectivement plus consommateur de ressources qu'une solution PHP à base de templates, mais dispose d'un atout crucial : la transformation peut être déportée sur le poste client, et donc décharger complètement le serveur du rendu HTML ou autre.

    XSLT est puissant, mais d'un apprentissage assez difficile, tant il est éloigné de la programmation telle qu'on la pratique avec PHP (XSLT est souvent considéré comme proche des langages déclaratifs et fonctionnels).

    L'approche XSLT impose un niveau d'abstraction supplémentaire : au lieu d'envoyer directement les variables PHP au moteur de templates avec un système de templates classique, il faut passer par une sérialisation XML pour servir de source de données à XSLT. A noter que pour cette sérialisation on peut se passer complètement de SimpleXML ou DOM, et utiliser des templates pour le faire (Smarty fait ça très bien).

    Enfin, PHP 5 est de loin la meilleure version de PHP pour travailler avec XSLT. libxml2 et libxslt sont des librairies stables et performantes, et les soucis rencontrés avec Sablotron sous PHP 4 ne sont plus qu'un mauvais souvenir.

  3. #3
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut
    J'ai continué à me documenter, et il semblerait qu'au final, une solution à base de template ne se justifie pas : en effet, les moteurs de templates sont écrits en php... Donc au final, lorsque tu insères des variables dans ton template, c'est un peu comme si tu utilisais <?php echo "$variable"; ?> en termes de performances (sauf que c'est plus long, due à la lourdeur du moteur)... Je peux me tromper hein, c'est juste ce que j'au lu et compris. En gros, on utilise php pour séparer le fichier template et les fonctions php... Ce qui est un non-sens :p

    Toujours d'après ce que j'ai compris, il est plus intéressant de simplement créer des objets php avec les fonctions que tu utilises dans des fichiers php (des genres de librairies), puis d'inclure ces librairies dans les pages du site, et d'appeler les fonctions quand nécessaires. Ainsi, on rend le code html bien plus lisible, on peux facilement retoucher les fonctions sans avoir à retoucher à toutes les pages du site, et on ne passe pas par un moteur, qui forcément alourdit le traitement avant l'affichage des pages.


    Pour ce qui est de xslt, c'est vrai que ce que tu m'as dit me fait peut : en effet, mon but est avant tout de rendre mon code plus clair et donc plus facilement maintenable, pour au final gagner du temps (lors des maintenance, ou des chasses au bugs :p ). Si c'est pour devoir passer par un moteur de template pour envoyer mes données php à un fichier xml, pour ensuite que ces données soient exploitables par xslt, qui va convertir le tout en html, ça me fait sacrément penser à une usine à gaz

    N'hésite pas à me corriger si j'ai fait une erreur logique, ou si j'ai mal compris quelque chose, mais d'après ce que j'ai compris, l'utilisation d'un moteur de template ou même de xslt n'est pas justifiée pour l'utilisation que j'en ferais.

    Merci en tous cas à toi pour tes informations, elles m'ont permies de mieux comprendre comment utiliser xslt (c'est toujours intéressant d'apprendre ).

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2004
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    En premier, désolé pour cet up, mais ce topic était court et contenait déjà pas mal de choses qu'on aurait dit dans un nouveau topic...

    ***
    Je me pose aussi cette question, et j'ai d'autres points qui peuvent faire pencher la balance.

    En ce qui me concerne, le but est de développer une sorte de framework maison dont la principale règle du cahier des charges et : "extensible, le plus possible".

    Donc, j'ai envie d'ajouter que XSLT à l'avantage de permettre de générer à la sortie plusieurs formats (XHTML/PDF/autres normes issues de XML/Texte simple/...), sans avoir à retoucher à mon noyau php gérant la vue.

    De plus, XSLT est quand même une technologie qui semble avoir un bel avenir.

    Mais ce qui m'inquiète le plus c'est la prise en main, je ne me fais pas de soucis pour moi, mais sachant que le but de ce framework est de pouvoir être distribué, il ne faut pas qu'il rebute tous les utilisateurs potentiels. Enfin, j'ai peur que sans fixer de DTD, les arbres XML que je ne pourrais gérer deviennent du n'importe quoi, mais d'autre part, encore une fois, un utilisateur peut être gêné par la contrainte de devoir concevoir sa propre DTD en développant un outil à partir de ce framework.

    il semblerait qu'au final, une solution à base de template ne se justifie pas : en effet, les moteurs de templates sont écrits en php... Donc au final, lorsque tu insères des variables dans ton template, c'est un peu comme si tu utilisais <?php echo "$variable"; ?> en termes de performances (sauf que c'est plus long, due à la lourdeur du moteur)... Je peux me tromper hein, c'est juste ce que j'au lu et compris. En gros, on utilise php pour séparer le fichier template et les fonctions php... Ce qui est un non-sens :p
    Oui et non : les templates évitent justement la liberté de pouvoir mettre du php "comme on veut", et ça devient très important notament pour le développement colaboratif : imagines si un designeur, parce que ça l'arrange et qu'il connais un peu php, va créer un modèle HTML à partir des fonctions que tu lui donnes, et, à un moment, va décider de faire un appel à la base de donnée par lui-même, "parce que ça l'arrange" : il ne fait pas son travail, plombe le tien, peut abimer certaines données... et j'en passe. Donc peut-être n'est-ce pas une si bonne idée de lui laisser le champ libre : un moteur template évite cela. Après, si tu bosse seul, tout dépend de la taille et des contraintes du projet.

  5. #5
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut
    Cette fois ci c'est moi qui remonte le topic d'outre-terre

    Oui et non : les templates évitent justement la liberté de pouvoir mettre du php "comme on veut", et ça devient très important notament pour le développement colaboratif : imagines si un designeur, parce que ça l'arrange et qu'il connais un peu php, va créer un modèle HTML à partir des fonctions que tu lui donnes, et, à un moment, va décider de faire un appel à la base de donnée par lui-même, "parce que ça l'arrange" : il ne fait pas son travail, plombe le tien, peut abimer certaines données... et j'en passe. Donc peut-être n'est-ce pas une si bonne idée de lui laisser le champ libre : un moteur template évite cela. Après, si tu bosse seul, tout dépend de la taille et des contraintes du projet.
    Je ne vois pas ça comme cela. En effet, l'intérêt justement de PHP5 est le langage objet. Et je m'en sert pour créer des fonctions (sans arguments en entrée, ou juste pour des options) qui me permettent de réaliser des actions sans avoir à avoir de "tartine de php" dans mon code HTML. Ainsi, même si un designer travaille sur la page, ce n'est pas parce qu'il va avoir des $page->affichage(), ou $page=new page(), qu'il risque de faire des appels à la BDD, ou même de modifier mon code, comme pour un template. Et dans des fichiers distincts, j'ai mes classes bien à l'abris du vil designer

    L'intérêt des fonctions est justement qu'elle sont réutilisables, mais aussi qu'elles ne sont pas modifiable directement dans mon fichier HTML. Il n'y a donc aucune requête pour le DBB visible, et il est impossible à une personne éditant le fichier HTML de bidouiller mes fonctions .

    Par contre, il est vrai que j'hésite encore beaucoup à séparer le traitement de la présentation, pour ce qui est de mes objets. En effet, séparer les deux par exemple pour a livre d'or ne me semble pas très intéressant : je doute qu'un livre d'or, tout comme un système de news par exemple puisse avoir 36 designs différents, en termes de balise HTML. Et avec le CSS, on peux facilement changer son apparence, sans avoir à toucher à mon objet :p


    Pour finir, en effet, je bosse seul, et je cherche surtout des solutions qui me fassent gagner du temps, aussi bien en développement qu'en maintenance. C'est pour cela que le PHP5 et ses classes m'ont séduit :p


    N'hésitez pas à donner votre avis sur tout cela, c'est toujours très intéressant de comparer nos points de vues, pour corriger ses apprioris

  6. #6
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 127
    Points : 71
    Points
    71
    Par défaut
    Et aujourd'hui c'est à mon tour de déterrer le topic :p

    Avec les évolutions marquantes de php, on peux se demander si la librairie php pour le xslt vaut-elle plus le coup aujourd'hui ?

    D'ailleurs est-elle écrite en C ou php ?

    Enfin, pourquoi ne pas écrire un moteur de template en C que l'on ajouterai en tant que module php pour optimiser le traitement du template ? cela permettrait une plus grande performance ?
    (et tant qu'a faire, faire aussi un module php en c pour l'orm et hop :p)

    Vu que le topic à démarré en -200 avant JC, un retour d'expérience des différents protagonistes sur ce qu'ils ont finis par utiliser serait super intéressant !

    Alors ? qu'utilisez-vous maintenant ?

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 398
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 398
    Points : 15 760
    Points
    15 760
    Par défaut
    Pour les gros sites, il est maintenant conseillé d'utiliser une architecture MVC qui est l'évolution des templates

    tu peux par exemple regarder ce tutoriel pour plus d'explications sur MVC :
    http://julien-pauli.developpez.com/t...vc-controleur/
    tu peux aussi utiliser un framework récent qui utilise MVC comme Zend Framework par exemple :
    http://g-rossolini.developpez.com/tu...roduction#LI-B

  8. #8
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 127
    Points : 71
    Points
    71
    Par défaut
    Le problème de Zend, comme d'autres frameworks (mega-frameworks), c'est qu'ils sont plutôt lent à l'éxécution.

    C'est ce que Rasmus Lerdorf a dit récement :/

    Donc que faire ?? :p

  9. #9
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 398
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 398
    Points : 15 760
    Points
    15 760
    Par défaut
    c'est normal, en général le code objet est plus lent que le code procédurale mais quand on réalise un gros projet il faut d'abord se concentrer sur la maintenance du code et l'optimisation devrait se faire tout à la fin après avoir été testé en conditions réelles
    en plus en ce moment les processeurs sont de plus en plus puissant donc la plupart du temps il n'y a plus besoin de faire d'optimisation importante

Discussions similaires

  1. Que choisir pour gérer les sauvegardes : fichiers XML ou base de données ?
    Par Invité dans le forum Développement 2D, 3D et Jeux
    Réponses: 11
    Dernier message: 14/06/2007, 11h58
  2. Que choisir pour déveloper en C++ : wxWidget, Qt, GTK... ?
    Par Spack dans le forum Bibliothèques
    Réponses: 13
    Dernier message: 17/12/2006, 10h06
  3. Réponses: 13
    Dernier message: 12/12/2006, 21h44
  4. Que choisir pour faire un Client/Serveur
    Par Crayon dans le forum Composants VCL
    Réponses: 5
    Dernier message: 10/04/2005, 17h43
  5. Librairies graphiques que choisir pour la portabilité ?
    Par SamRay1024 dans le forum OpenGL
    Réponses: 8
    Dernier message: 03/02/2005, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo