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

Bibliothèques et frameworks PHP Discussion :

[Smarty] Utilité ? Quand les utiliser ?


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut [Smarty] Utilité ? Quand les utiliser ?
    Bonjour,

    Ma question va vous paraitre sans doute stupide, mais je n'arrive pas à trouver l'utilité des templates.

    Je fait une citation de cette page

    Un système de template est un système permettant de séparer le code source d'une page (PHP) de son design (HTML).
    Quel est l'intérêt ?
    Pour moi le html d'un site en production reste fixe, je vois pas du tout d'intérêt à changer le html.
    Peut-être à la limite pour les images, mais ça on pourrait facilement le faire dans un fichier xml, un array des images du site, ou autres.

    Ce système présente quelques avantages

    1. Pouvoir travailler sur le design sans modifier une ligne de code;
    2. Pouvoir modifier le code sans se soucier du design;
    3. Créer facilement plusieurs design pour le site;
    4. Faciliter la maintenance du code;
    5. Permet de gérer un cache.
    1- Les css ne sont-ils pas fait pour ça ?
    2- Quand je créé mes pages php, je mets des classes css sur les attributs html, et donc du design, je ne m'en souci pas pour l'instant puisque une fois le php/html en place et fonctionnel, je m'occupe de la mise en forme via les css.
    3- Idem, c'est encore avec les css que je fait ceci, un cookie, ou un champ d'une table pour les designs et c'est bouclé.
    4- En quoi un sytème de template facilite la maintenance du code php, si mon code est bien commenté, je n'ai aucun mal à faire une petite modif.
    5- Ben là encore je peut gérer facilement ceci avec un fichier xml.

    Enfin, voilà, je ne comprend pas du tout quel est le réel intérêt d'utiliser des templates, surtout que (avis personnel), ça reste quand même lourd.

    Est-ce beaucoup utilisé dans le monde professionnel ?
    Est-ce justement réservé au monde professionnel(plusieurs developpeurs)?
    Un intérêt dans le cas d'une application personnelle ?

    Merci d'éclairer mon esprit embrouillé

  2. #2
    Membre émérite
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Par défaut
    Le système de template est très utile dans des contextes où une application web est installée dans une entreprise qui souhaite par exemple avoir un site web qu'il peut facilement modifier et ajouter du contenu sans connaitre comment le code fonctionne par exemple.
    De plus, dans certains cas le CSS ne parvient pas à palier à tout ce que l'on désire faire pour le design d'un site. Par exemple, l'on désire faire des sections dans un site et séparer les sections facilement et modifier des styles de sections d'un simple clique plutôt qu'aller jouer dans du code.
    Par exemple des applications CMS comme Joomla.

  3. #3
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

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

    Citation Envoyé par Xunil
    Est-ce beaucoup utilisé dans le monde professionnel ?
    Oui
    Citation Envoyé par Xunil
    Est-ce justement réservé au monde professionnel(plusieurs developpeurs)?
    Non
    Citation Envoyé par Xunil
    Un intérêt dans le cas d'une application personnelle ?
    Le même que pour une application professionnelle de même ampleur.

    Fonctionnellement, un moteur ou système de templates n'apporte pas grand chose à une application. Par contre, en terme de génie logiciel, c'est inestimable : la maintenance est facilitée et les évolutions sont possibles avec des délais contrôlés et des risques de régression réduits. La séparation entre code PHP et présentation HTML permet de changer complètement l'ergonomie d'un site, et pas seulement le design, sans toucher à une ligne du code métier.

    Mais les moteurs de templates, dans un contexte professionnel, ne sont que rarement employés seul ; généralement, on les trouve couplés à un framework MVC, dans lequel ils implémentent la partie Vue.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  4. #4
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Je ne connais pas du tout les cms, enfin du moins comment est bâti leur code, je vais installer joomla pour voir comment il fonctionne.

    Donc, c'est un peu ce que je pensais au départ, il faut quand même un projet d'une certaine envergure pour pouvoir trouver une réelle utilité aux templates.

    Je vois beaucoup de personnes faisant de "petits sites" qui utilisent un moteur de templates comme smarty, parce que ça fait pro ? c'est dans l'air du temps ? quoiqu'il en soit, je trouve ça complètement inutile.

    Je ne connais pas non plus les frameworks, je vais regarder ce que c'est.

    Merci de vos réponses

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Par défaut
    Salut,

    Comme dit précedement je pense que la séparation entre code métier et HTML est très utile au niveau de la maintenance du code.
    Cependant pour des tout petit sites il n'est pas forcément nécessaire d'utiliser un système de template comme Smarty, dans le sens où PHP a été conçu à l'origine comme un moteur de template


    Un exemple rapide : on veut récuperer des données dans une BDD et les afficher dans un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $mysql = mysql_connect(...);
    $query = mysql_query("SELECT ... FROM ...");
     
    echo "<html><body><table>";
    while ($row = mysql_fetch_assoc())
    {
      echo "<tr>";
      foreach ($row as $val)
        echo "<td>$val</td>";
      echo "</tr>";
    }
    echo "</table></body></html>";
    Ici le code html est au milieu du code PHP : c'est pas facile à lire, et pas très flexible.
    En revanche si on sépare le PHP et le HTML, on pourrait faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    $mysql = mysql_connect(...);
    $query = mysql_query("SELECT ... FROM ...");
     
    $table = array();
    while ($row = mysql_fetch_assoc())
      $table[] = $row;
     
    ?>
    <html>
    <head><title></title></head>
    <body>
    <table>
    <?php foreach ($table as $row): ?>
      <tr>
      <?php foreach ($row as $val): ?>
        <td><?php echo $val; ?></td>
      <?php endforeach; ?>
      </tr>
    <?php endforeach; ?>
    </table>
    </body>
    </html>
    Avantages:
    Le code PHP n'est pas dépendant de l'affichage: si on ne veut plus l'afficher dans un TABLE mais dans des listes avec UL/LI par exemple, on ne touche qu'a la partie HTML.
    Inversement si on veut lire les données dans un fichier xml au lieu d'une bdd, on n'a pas a toucher au HTML.

    On peut même mettre tout le html dans un autre fichier et l'appeler via un include(), pour avoir plusieurs templates différents.

    Evidement sur un exemple aussi simple, le gain n'est pas énorme, en revanche dans un vrai site, on y gagne énormement en lisibilité du fait que la proportion de HTML par rapport au PHP est généralement beaucoup plus importante.

    La gestion des erreurs est également plus facile : si un test quelconque est négatif n'importe où dans le code métier, on peut sortir faisant un include() d'une page d'erreur tout en étant sur que rien n'a été affiché avant...


    J'espere avoir été clair
    La seule chose que je peux te conseiller, c'est d'essayer par toi même de séparer code métier et présentation et de voir par toi même si ça ne t'apporte pas un plus.

  6. #6
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Par défaut
    salut

    voui,

    moi perso je n'utilise pas de template, c'est bien plus lourd que l'utilisation de php seul, regarde un petit exemple tres simple

    imagine tu as un fichier index.tpl.html de cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <html>
    ...
    <div>
        <bloc_menu>
    </div>
    ...
    </html>

    bah niveau php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $mon_menu = '<ul>';
    $mon_menu.= '<li>categorie 1</li>';
    $mon_menu.= '<li>categorie 2</li>';
    $mon_menu.= '</ul>';
     
    $tpl = file_get_contents('index.tpl.html');
     
    $view = str_replace('<bloc_menu>', $mon_menu, $tpl);
    echo $view;
    ?>
    tu separes ainsi la vue de l'application metier... bon ce n'est q'un petit exemple ... ce nest pas a comparé avec smarti ou encore savant (:

    sahid

  7. #7
    Membre émérite
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Par défaut
    Citation Envoyé par sahid
    moi perso je n'utilise pas de template, c'est bien plus lourd que l'utilisation de php seul
    C'est plus lourd pour qui, le développeur ou les utilisateurs. Le but des templates et entre autre de facilier l'utilisation d'une interface web pour des utilisateurs sans connaissances avancées en langage web ce qui est très utile en entreprise!

  8. #8
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Citation Envoyé par Taum
    Avantages:
    Le code PHP n'est pas dépendant de l'affichage: si on ne veut plus l'afficher dans un TABLE mais dans des listes avec UL/LI par exemple, on ne touche qu'a la partie HTML.
    Inversement si on veut lire les données dans un fichier xml au lieu d'une bdd, on n'a pas a toucher au HTML.

    On peut même mettre tout le html dans un autre fichier et l'appeler via un include(), pour avoir plusieurs templates différents.

    Evidement sur un exemple aussi simple, le gain n'est pas énorme, en revanche dans un vrai site, on y gagne énormement en lisibilité du fait que la proportion de HTML par rapport au PHP est généralement beaucoup plus importante.

    La gestion des erreurs est également plus facile : si un test quelconque est négatif n'importe où dans le code métier, on peut sortir faisant un include() d'une page d'erreur tout en étant sur que rien n'a été affiché avant...


    J'espere avoir été clair
    La seule chose que je peux te conseiller, c'est d'essayer par toi même de séparer code métier et présentation et de voir par toi même si ça ne t'apporte pas un plus.
    Merci pour ton exemple

    Par contre, j'ai pas trop compris l'avantage pour la gestion des erreurs, je n'utilise pas de templates, et je gère ça de cette façon.

    Citation Envoyé par Sahid
    moi perso je n'utilise pas de template, c'est bien plus lourd que l'utilisation de php seul, regarde un petit exemple tres simple
    Ben voilà c'est en partie ça qui me gêne.
    Si je suis ton exemple, des str_replace dans toutes les pages de mon site, c'est quand même lourd comme truc.


    Citation Envoyé par efficks
    C'est plus lourd pour qui, le développeur ou les utilisateurs. Le but des templates et entre autre de facilier l'utilisation d'une interface web pour des utilisateurs sans connaissances avancées en langage web ce qui est très utile en entreprise!
    Ah bon ?
    Je pensais justement comme il a été dit que c'était pour faciliter le travail des développeurs et de rendre plus "propre" le code.
    J'admet, je n'ai jamais été voir en entreprise comment cela se passait

    Citation Envoyé par GrandFather
    Evidemment, s'il s'agit d'une application triviale avec 3-4 pages, quelques requêtes MySQL et une centaine de lignes de PHP, l'utilisation d'un moteur de templates paraît surdimensionné. Mais dès qu'on veut faire du travail sérieux, toute application, même modeste, devrait utiliser un moteur de templates.
    Je dirais pas que mon site(en construction) va se résumer à ça
    Il sera quand même assez conséquent, mais bon maintenant c'est trop tard pour m'y mettre, j'ai trop avancé.
    Peut-être pour la prochaine version.

    Citation Envoyé par efficks
    Bien sûr que la page prends quelque millisecondes à générer mais si le code est bien fait l'utilisateur n'y verra que du feu et l'avantage primera sur les petits désavantages
    Tu es sûr de ça ?
    Car justement ce qui m'a freiné pour l'instant de m'essayer aux templates, c'est justement les performances, et je ne pense pas que ça prenne quelque millisecondes en plus, enfin, ça doit dépendre de beaucoup d'autres paramètres comme le serveur le nombre de connectés au site, etc...

    Y'aurait pas des comparatifs qui existeraient pour comparer ?

    Merci à tous de vos réponses

  9. #9
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Par défaut
    Salut Xunil,

    lol, bon je t'avoue que mon code est bien basique,
    mais tu crois que le templates que tu va utiliser, ne va pas parser ton fichier tpl ?

    les templates sont ecrits en php, donc pour créer leurs "macro-code" il se servent de fonctions php ce qui rend l'utilisation de templates bien plus lourde que l'utilisation simple de fonction php natives ecrites en c, meme si smarti peut etre compilé avec php, le gain apporté est minime ( sur un test de 1000 rendus de page, en moyenne avec un smarti compilé et un sans compilation, le gain est de 6 centiemes de seconde ...)

    bref, si tu veux un gain de performance dans tous les cas il te faudra travailler directement avec des fonction php ecrites en c ...

  10. #10
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Citation Envoyé par Xunil
    Donc, c'est un peu ce que je pensais au départ, il faut quand même un projet d'une certaine envergure pour pouvoir trouver une réelle utilité aux templates.

    Je vois beaucoup de personnes faisant de "petits sites" qui utilisent un moteur de templates comme smarty, parce que ça fait pro ? c'est dans l'air du temps ? quoiqu'il en soit, je trouve ça complètement inutile.
    Evidemment, s'il s'agit d'une application triviale avec 3-4 pages, quelques requêtes MySQL et une centaine de lignes de PHP, l'utilisation d'un moteur de templates paraît surdimensionné. Mais dès qu'on veut faire du travail sérieux, toute application, même modeste, devrait utiliser un moteur de templates.

    @Taum : attention, je vois une petite subtilité entre moteur de templates (type Smarty) et système de templates (PHP "pur") : les deux fonctionnent selon le principe de la substitution de variables, mais le moteur apporte des services supplémentaires, tels que la mise en cache, des bibliothèques de fonctions, un macro-langage, des fichiers de configuration, le support de i18n et l10n, etc.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  11. #11
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Par défaut
    efficks,
    je crois que tu ne m'as pas compris, je parle du rendu de la page, en utilisant un systeme de templates, elle sera bien plus longue a etre généré, et le serveur travaillera bien plus, donc un manque d'optimisation, soit un investisement suplémentaire en matériel.

    GrandFather,
    Je pense que la gestion de cache, peut tres bien ce faire avec PHP, APC est introduit dans le moteur de php, et il est bien plus performant que tous autre code ecrit en php, ensuite le "macro-langage", est plutot un inconvéniant, surtt si tu prends celui de smarti qui n'a pas trop a voir avec php, pour l'i18n une classe tres simple peut te le gerer facilement.

    m'enfin je ne vais pas remettre en question l'utilisation de templates, c sur qu'il doit y a avoir un nombre de gain assez important. Seulement pour l'instant l'utilisation de php ma tjrs sufit

  12. #12
    Membre émérite
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Par défaut
    Citation Envoyé par sahid
    efficks,
    je crois que tu ne m'as pas compris, je parle du rendu de la page, en utilisant un systeme de templates, elle sera bien plus longue a etre généré, et le serveur travaillera bien plus, donc un manque d'optimisation, soit un investisement suplémentaire en matériel.
    Bien sûr que la page prends quelque millisecondes à générer mais si le code est bien fait l'utilisateur n'y verra que du feu et l'avantage primera sur les petits désavantages. L'investissement n'est pas plus important, en tout cas pas bien bien plus.
    On est en mode web... pas en temps réel!

Discussions similaires

  1. Castor C++ et la PL, quand les utiliser ?
    Par SalutAVous dans le forum Débuter
    Réponses: 2
    Dernier message: 19/02/2013, 22h56
  2. Réponses: 14
    Dernier message: 25/10/2007, 15h00
  3. Exceptions, quand les utiliser
    Par Invité dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 13/05/2007, 15h27
  4. fonctions et classes... quand les utiliser ?
    Par fastmanu dans le forum Langage
    Réponses: 6
    Dernier message: 03/04/2006, 00h39

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