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 :

[PHPLIB] Utilité des templates [Débutant(e)]


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 147
    Points : 109
    Points
    109
    Par défaut [PHPLIB] Utilité des templates
    Bonjour,

    Ca fait depuis très peu de temps que j'ai découvert les templates et que je me pose des questions là dessus. J'ai essayé la bibliotèque PHPlib (plus précisément le fichier template.inc) et je constate qu'il s'agit simplement d'un système de search&replace (oui je débute)
    Prenons la fonction set_var de la classe template qui permet de, je cite:

    * The function inserts the new value of the variable into the $varkeys and
    * $varvals hashes.

    set_var(string $varname, [string $value = ""], [boolean $append = false])

    et voici le code:

    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
    24
    25
    26
    27
    28
    29
    30
    function set_var($varname, $value = "", $append = false) {
        if (!is_array($varname)) {
          if (!empty($varname)) {
            if ($this->debug & 1) {
              printf("<b>set_var:</b> (with scalar) <b>%s</b> = '%s'<br>\n", $varname, htmlentities($value));
            }
            $this->varkeys[$varname] = "/".$this->varname($varname)."/";
            if ($append && isset($this->varvals[$varname])) {
              $this->varvals[$varname] .= $value;
            } else {
              $this->varvals[$varname] = $value;
            }
          }
        } else {
          reset($varname);
          while (list($k, $v) = each($varname)) {
            if (!empty($k)) {
              if ($this->debug & 1) {
                printf("<b>set_var:</b> (with array) <b>%s</b> = '%s'<br>\n", $k, htmlentities($v));
              }
              $this->varkeys[$k] = "/".$this->varname($k)."/";
              if ($append && isset($this->varvals[$k])) {
                $this->varvals[$k] .= $v;
              } else {
                $this->varvals[$k] = $v;
              }
            }
          }
        }
      }


    Sachant que l'utilité des templates est avant tout de séparer le contenant du contenu, d'où le php du html, alors, je pourrai très bien faire:

    fichier template.php
    fichier template.tpl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    include("template.php");
    ?>
    <html>
    <body>
    <?php echo $phrase; ?>
    </body>
    </html>
    en considérant que la fonction echo et include n'est pas vraiment du pure code PHP puisque ils ne sont pas tellement significatif du langage PHP.


    Par contre si on veut absolument une parfaite distinction entre un fichier html pure et un autre fichier .php, on pourrait dans ce cas utiliser un preg_replace + des expressions régulières qui va agir sur le fichier html.
    Par exemple dans index.html il y a une ligne où y a marqué *titre*
    Je pourrai alors dans un fichier php faire d'abord un file_gets_content sur index.html puis faire un preg_replace (ou str_replace) à l'aide d'expressions régulières pour "capturer" si je puis dire le mot *titre* et remplacer par ce que je veux.


    Donc voilà, c'est quoi l'utilité des templates ? N'est-ce pas se compliquer la vie quand on peut faire simple?

    Merci d'avance.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Les systèmes de templates substituent en général bien plus que des variables en prenant en charge des blocs notamment, qui permettent l'apparition de 0 à N fois d'une portion de code (très souvent utilisé au travers de boucles).

    Quant à votre interrogation sur l'utilité de la chose, PHP est lui-même en quelque sorte un système de templates et c'est ce que vous montrez au travers de votre exemple mais dans ce cas vous avez de nouveau du code PHP dans votre code HTML (ou l'inverse). En ce qui concerne le fait de créer vous-mêmes votre système de templates basé sur preg_replace, ce serait un peu idiot dans la mesure où c'est ce que font plus ou moins déjà les systèmes de templates existants De plus il ne faut pas oublier que certains d'entre eux intégrent un système de cache (Smarty par exemple), ce qui les rend encore plus intéressants.


    Julp.

  3. #3
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    J'abonde dans ton sens julp ... inutile de réinventer la roue ... et puis les search and replace d'expressions régulières auraient leurs limites ... notament dans le cadre des structures plus complexes que des variables simple (array et object).

    Les systèmes de templates proposent également d'autres fonctionnalités comme dans Smarty la possibilité en une lige de code de créer une liste déroulante ({html_option ... }) voir les fonctions utilisateur, ou bien (encore dans smarty) la console de debuggage ... et bien d'autres choses.

    Voilà ... @+

  4. #4
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    C'est clair que php est déjà lui-même un bon système de template (le meilleur ?)

    Donc voilà, c'est quoi l'utilité des templates ? N'est-ce pas se compliquer la vie quand on peut faire simple?
    La première utilité, d'après moi, c'est la sécurité dans le sens où les gars qui font les templates ne risquent pas de briser le code php en amont.

    Un autre avantage qui est parfois mis en avant c'est que les templates qui ne comportent donc pas de <?php ?> sont plus facilement lisibles/éditables dans des éditeurs text et wysiwyg (si on se débrouille bien, un fichier de template peut être un xml valide, chose beaucoup plus rare avec php uniquement)

    Un point non négligeable aussi, c'est que les "designers" ne sont pas censés connaître php, alors ils doivent apprendre un pseudo langage de template, ce qui peut être considéré comme légèrement paradoxale...

    En ce qui me concerne, plus je peux éviter les systèmes de template annexes (autre que php lui-même), mieux je me porte

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 147
    Points : 109
    Points
    109
    Par défaut
    Ok merci à vous trois, je n'ai pas poster avant, car je voulais voir s'il y aurait des avis différents, mais apparement tout le monde est d'accord sur l'intérêt que portent les templates.
    Merci.

  6. #6
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Si je peux me permettre, un petite chose pour conclure.

    Je dirais simplement que si un développeur php s'intéresse aux templates alors il y a de fortes chance qu'il en trouve une utilité.

    Pour ma part je m'y suis mis parce que dans tous mes projets en php, j'arrivais toujours à un moment où j'avais l'impression que ça devenait une usine à gaz, cela malgé des efforts pour bien organiser mon code (utilisation de fonctions, classes, refactoring régulier ...)

    L'utilisation des templates a en partie répondu à mon problème en règlant des problèmes de lisibilité, typiquement le mélange du code php et du html. La partie mise à jour / évolution des fonctionnalités n'est plus un calvaire ;=)

    Certains ne voient pas pourquoi ils utliseraient des templates ... tant mieux pour eux ... s'ils arrivent à y voir clair dans leur code ... moi j'ai du mal avec mon propre code ... l'usage des templates s'est imposé de lui-même.

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilité des types OpenGL GLint, GLfloat, GLvoid, etc.
    Par Djakisback dans le forum OpenGL
    Réponses: 17
    Dernier message: 14/12/2005, 12h35
  2. utilité des tables ??
    Par shadowmoon dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/06/2005, 09h43
  3. Utilité des schemas sous Postgresql?
    Par sessime dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/03/2005, 15h45
  4. Utilité des logos Xiti ?
    Par KibitO dans le forum Evolutions du club
    Réponses: 5
    Dernier message: 20/02/2005, 17h42
  5. utilité des DbControl
    Par portu dans le forum Bases de données
    Réponses: 6
    Dernier message: 02/07/2004, 05h41

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