création d'un moteur de template perso

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : création d'un moteur de template perso

par Calimero » 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).

par BeRoots » 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?

par Hywan » 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 ;-)

par Cyrano » 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.

par BeRoots » 22 juil. 2007, 13:15

qu'entender vous par "parser" ? :-k

par jed » 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:

par Hubert Roksor » 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.

par jed » 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.

par titerm » 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.

par BeRoots » 10 juil. 2007, 00:58

et pour ce qui est des autres question, une idée :-k

par jed » 09 juil. 2007, 09:02

Je comprend pas trop cette histoire de "langage" pour des templates. Il est évident que si tu développe ton application en php, tu vas introduire du php dans tes templates! Mais l'un des principes de base d'un template est d'y trouver le moins de php possible pour isoloer la partie code de la partie design. Donc si ton moteur est bien conçu, tu ne devrais trouver quasiment aucune fonction dans tes templates, juste les variables devant être intégrées au design.

par BeRoots » 08 juil. 2007, 21:31

je vais comme vous me le conseiller utiliser tout le power de PHP :langue:

1°)par contre mon fichier php va avoir une extention .tpl à la place de .php... C'est ça?

2°) si je comprend bien aussi, quand naholyr parle de gestion des headers, c'est un controle de l'envoi des headers http. c'est ça?

3°)et pour ce qui est du contenu même de la page: peut on passer par un template assicier au template de base ou doit on tout faire dans le même template (squellette de base + contenu de la page)?

merci d'avance ;)

par titerm » 08 juil. 2007, 20:31

Bah soit tu suis ce que naholir a indiqué, a savoir tu utilises php en tant que moteur de template et donc tu utilises php pour les .tpl aussi(plus classiquement phtml) , soit tu te créer ton propres langage comme on peut trouver dans les moteurs de templates classique. mais pour moi, créer un langage pour l'occasion n'apporte pas grand chose de plus. php a une syntaxe a coup de foreach : endforeach, if : endif qui est largement aussi compréhensible que ce qu'on peut voir ailleur, et tout aussi accessible par un non developper. Après, il faut voir avec les gens avec lesquels tu vas travailler si ils connaissent déjà un langage de template, ou si il sont habitué a tel ou tel truc. La résistance au changement est parfois dur a surmonter.

par BeRoots » 08 juil. 2007, 17:15

ok j'ai bien muris le sujet et je revient avec une questions :)

quel language pour les fichier .tpl :-k (c'est pour faire des templates avec utilisation des fonction existante de php dedant. des truc genre date(); ...) Du php je suppose :?

par BeRoots » 27 juin 2007, 22:26

merci les gars :)

je regarde un peu et je reviendrai une fois que j'aurrai muri ma reflexion ;)