création d'un moteur de template perso

Mammouth du PHP | 505 Messages

10 juil. 2007, 07:55

Pour les extensions, tu peux mettre l'extension que tu veux mais il faut faire attention a :
- Si tu veux que le php a l'interieur soit interprété, il faudra ajouter l'extension comme étant potentiellement un source php pour apache via "AddType application/x-httpd-php .tpl" dans le httpd.conf
- Cette manip n'est pas nécessaire si c'est juste un gabarit que tu inclus via include ou require dans un fichier déjà parser comme les .php
- Le ZendFramework par exemple utilise l'extension .phtml par defaut mais elle n'est pas obligatoire.

2/ Pour les headers, la gestion de l'envoie différé des headers est importante car une fois envoyé, on ne peut plus le retiré (tu peux juste savoir si des headers ont été emis), en revanche, si tu gères une queue qui sera emise a la fin, tu peux l'altérer à tout moment.

3/ il est courant d'avoir un squelette global de la page qui fait lui meme appelle a des sous-template découpé en brique fonctionnelle. Par exemple tu peux avoir 2 templates principaux qui définiront pour l'un un layout 2 colonnes et pour l'autre un layout sur 3 colonne, mais l'entete, le menu, le footer etc seront commun et inclue dans les templates principaux. De cette facon, si tu retouches l'entete ou autre, tu n'as qu'un endroit ou le faire.

jed
Eléphant du PHP | 218 Messages

10 juil. 2007, 08:28

Ce que tu dis est tout à fait faux car les templates ne sont pas exécutés directement par le serveur mais sont parsés et intégrés dans la page hôte écrite en php. :? Sinon tous les forums utilisant des templates comme woltlab ou phpbb ne fonctionneraient sur aucun serveur n'ayant pas activé l'extension .tpl.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

10 juil. 2007, 09:04

Ce que tu dis est tout à fait faux [...]
Ce serait cool de rester un tant soit peu courtois, on est pas sur un ring de boxe, inutile d'être aggressif.

En l'occurence, j'ai bien peur que tu aies raté la plus grande partie du message de titerm et en particulier ce passage
Cette manip n'est pas nécessaire si c'est juste un gabarit que tu inclus via include ou require
Donc voilà, on met l'extension qu'on veut quand on include(), mais si on veut qu'Apache appelle PHP pour les pages en ".tpl" alors il faut suivre la manip décrite plus haut. Pour le reste... il fait chaud dehors, mais rien qu'un Ice Tea ne saurait calmer.

jed
Eléphant du PHP | 218 Messages

10 juil. 2007, 09:08

Lol! C'est le mot "faux" qui est agressif et non courtois? J'avoue que je comprend pas tout... :shock: Alors pardonnez cette petite agression j'en suis sincèrement désolé. :lol:

Mammouth du PHP | 843 Messages

22 juil. 2007, 13:15

qu'entender vous par "parser" ? :-k
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 19672 Messages

22 juil. 2007, 13:47

qu'entender vous par "parser" ? :-k
Sommairement : analyser une chaine de caractère pour en extraire des éléments spécifiques.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 4674 Messages

22 juil. 2007, 22:37

Il faut savoir une chose : l'extension n'a pas grand rapport avec le contenu du fichier. Quand on découvre la programmation, on s'invente de belles extensions (je devais être champion je crois ...). Il ne faut pas s'amuser à faire un système que personne ne comprend. Il faut rester à des choses simples.

Déjà, on utilise PHP comme langage de template. Pourquoi ? Entre autre, car c'était le premier but de PHP :) Pas le seul, je vous l'accorde, mais « entre autre ».
Beaucoup de personnes utilisent la convention .phtml. On a le "ph", de PHP, et le "html" de ... (à vous de remplir le blanc).

En temps normal, tu as un objet qui te sert à assigner des variables. Ces variables se retrouvent dans ton fichier .phtml, et tu vas les afficher avec des echo, foreach etc. Ce fichier de template sera appelé par include* ou require* dans ton objet --ou package, on se comprend-- après avoir assigné toutes les variables. Les variables étant assignées avant l'inclusion, il n'y aura pas d'erreur. Et quand le fichier va être inclut, PHP va automatiquement remplacer toutes les variables par leurs valeurs.
C'est le premier exemple de la documentation de l'include qui illuste ce principe. On va toujours au plus simple !

La difficulté est d'avoir seulement des affichages de variables dans ton fichier de template. Ce fichier n'a que cet unique but. On ne doit pas avoir de connexion aux bases de données, ou de code pour envoyer un mail ou autre. On tend à avoir le moins de code PHP.

Si tu utilises ce système, tu évites d'avoir à parser ton fichier de template, d'utiliser des expressions régulières (tu vas pas devenir chauve tout de suite donc ; non négligeable ;)), et de ralentir ton application. PHP s'occupe de tout :)

Un petit conseil, si tu utilises PHP 5, tu peux utiliser les méthodes de surchages magiques de PHP : __set, __get, et __call par exemple. Ca te facilitera la vie pour l'assignement et appel des variables ou fonctions.

Bonne chance ;-)
Modifié en dernier par Hywan le 24 août 2007, 17:38, modifié 2 fois.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 843 Messages

05 août 2007, 12:16

et pour ce qui est des systeme de cache des moteurs de template...

est ce un cache coté client ou coté server?
quel est le but de ce cache?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

ViPHP
ViPHP | 2287 Messages

05 août 2007, 13:27

et pour ce qui est des systeme de cache des moteurs de template...

est ce un cache coté client ou coté server?
quel est le but de ce cache?
Forcément côté serveur puisque l'assemblage des templates se fait côté serveur avant ou pendant l'envoi de la page.

L'intérêt est surtout pour les moteurs de template "lourds" qui sont une sorte de nouveau langage, l'analyse de la syntaxe du fichier est une étape qui prend du temps et tout ce qui permet de passer outre est bienvenu pour les performances. Un système de cache permet de n'avoir à faire cette opération qu'une seule fois, et de stocker soit le template "résultat" tout prêt (si on sait qu'on va s'en resservir), soit une étape intermédiaire (remplacement de la syntaxe spécifique du template par un équivalent php par exemple).
if(!@work()){ Nespresso(); } else { what(); }
______________________________