Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Templates > phplib et phpBB
phplib et phpBB Forum d'entraide sur les moteurs de templates phplib et phpBB. Avant de poster -> FAQ gabarits phpBB2, Cours phpBB2 et Sources phpBB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/02/2007, 01h18   #1
Membre régulier
 
Étudiant
Inscription : juillet 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2006
Messages : 147
Points : 75
Points : 75
Envoyer un message via MSN à Henry9 Envoyer un message via Yahoo à Henry9
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 :
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 :
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.
Henry9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2007, 11h30   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2007, 22h03   #3
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
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à ... @+
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2007, 01h09   #4
Membre éprouvé
 
Avatar de goodpz
 
Inscription : février 2007
Messages : 475
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 475
Points : 474
Points : 474
C'est clair que php est déjà lui-même un bon système de template (le meilleur ?)

Citation:
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
goodpz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2007, 02h39   #5
Membre régulier
 
Étudiant
Inscription : juillet 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2006
Messages : 147
Points : 75
Points : 75
Envoyer un message via MSN à Henry9 Envoyer un message via Yahoo à Henry9
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.
Henry9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2007, 21h15   #6
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
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.

@+
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h22.


 
 
 
 
Partenaires

Hébergement Web