Forum Clubic

Quelqu'un aurait-il smarty ?

…le moteur de templates.

Le site est apparment HS : smarty.php.net et je n’ai pas trouvé de mirroir pour le télécharger.

Donc si quelqu’un avait l’archive sur son pc ça m’aiderais beaucoup :jap:

Oh, Ishida-kun & Kon…

Pour ton problème, tu dois avoir ça via les channels PEAR. Encore que je me sers pas de smarty…

ah le site remarche, ils devaient être en maintenance :paf:

PEAR aussi est hébergé sur le domaine de php.net et il ne fonctionnait plus non plus tout à l’heure.

Tu utilises quoi pour des templates ?
Car là je prenais smarty juste parce que j’en ai entendu parler mais avant je fonctionnais avec une bête classe en php qui est peut être moins performante…template.inc

Je trouve Smarty trop lourd (pas pour le parsing mais pour le nombre de fichiers qui le composent)
Perso le petit template.inc de la phplib me suffisait (depuis j’ai mon propre moteur :sol: :smiley: )

Tant mieux si php.net est de retour :smiley: :smiley: :smiley: :smiley:

XTF Template Engine.

un outil fait maison, php5 uniquement, et qui utilise Bison.

bon je vais peut être en rester au template.inc, vu ce que vous pensez de smarty ça m’évitera de perdre du temps à l’essayer :smiley:

merci d’avoir répondu :jap:

Question un peu hors sujet : quel avantage a pour vous l’utilisation d’un moteur de templates par rapport à une bête gestion des templates en php ? :neutre:

?

La mise en cache?

le plus important c’est ça je dirais.

mon projet (XTF) n’a pas pour but de faire quelque chose d’extra ordinairement diffèrent de Smarty, mais juste de proposer quelque chose que je contrôle, donc la syntaxe est simple (et ce n’est pas le cas de celle de Smarty si j’ai bon souvenir)

D’extensible (je sais pas comment Smarty fonctionne, mais XTF peut facilement être étendu, vu que ça utilise une grammaire algébrique).

Ca c’est le côté langage XTF.

Maintenant je ne me fais pas d’illusion : parser un template dans de telles conditions peut prendre 200ms (sur un C2D E6400 & WinXP), et c’est là l’enjeu :

Mettre en cache le fichier parsé (ce que ne fait pas la phplib incluse avec phpbb) pour ne plus le reparser (donc passer de 200ms à 16ms dans mon cas)

Le but du jeu étant de faire cela de la meilleure façon (par exemple, j’optimise les if/else si possible, etc).

La phplib originale (http://phplib.sourceforge.net/) Avec son simple template.inc est classifiée comme étant “rapide” par tous les comparatifs. Et quand on regarde les sources (simples, courtes) on comprend un peu pourquoi (pas d’eval() ou autres fonctions horriblement lourdes)
La mise en cache napporterait finalement pas grand chose (en fait, il vaut mieux utiliser une classe de mise en cache des parties de pages et entièrement personnalisées…)

Ah tiens je viens de retrouver ce lien: http://cyberzoide.developpez.com/php4/template/

Edit: Il est vrai cependant que la phplib (le template.inc) n’a pas évolué depuis… 1999 (PHP3) donc on peut admettre qu’il y ait mieux aujourd’hui niveau optimisation

Alors pourquoi ne pas mettre simplement les pages de templates en cache avec PHP ?

La syntaxe de PHP est simple aussi non ? a-t’on vraiment besoin d’autre chose que des variables et des boucles dans un moteur de templates ? :neutre:

Je me pose ces questions parce que j’ai utilisé Smarty pendant un moment, puis je suis revenu finalement à une bête classe Page que j’instancie à chaque affichage et qui me gère tout le côté “template”, avec mise en cache si nécessaire.

J’y ajoute d’autres problèmes, de sécurité.

Sinon un moteur de template correspond plus ou moins à l’utilisation du modèle vue contrôleur (MVC) et évite d’avoir un code crade qui fait 2 en 1 (ton code n’est pas sponsorisé par Jean Louis David)

Tu parles bien du bazar utilisé par phpbb? Qui fait donc un eval après avoir passé une petite soupe de regexp sur le fichier? :slight_smile: Pour moi ça fait trois opérations :

  1. récupération du fichier (php3 ? donc implode(’’, file()), et pas file_get_contents())
  2. matraquage à coup de regexp, sans sécurité du code du template
  3. évaluation du code du template avec php (c’est obligatoire si tu veux de bonnes perfs, car faire une machine virtuelle en php… bonjour :))

http://phplib.cvs.sourceforge.net/phplib/p…inc?view=markup

Je n’ai pas vu de références à eval, donc je me trompe peut-être.

Par contre après lecture, oui. Y a pas de eval, mais des remplacements de chaîne.

Je suppose que tu veux dire écrire directement <?php echo $foo; ?> et ainsi de suite?

Il y a plusieurs raisons qui font que c’est stupide et lourd.

  1. Sécurité du code : mon moteur de template est sécurisé (et probablement Smarty). Cela veut dire que si tu écris un template pour un forum phpbb (ou autre), le fait de prendre une modification d’un prestataire inconnu risque pas de compromettre ton site.

C’est bête, mais je crois que dans phplib justement, tu peux faire des choses sympa (tu peux en tout cas jouer sur les BEGIN xxx pour afficher des messages d’erreur)

  1. Ne pas à se soucier de comment c’est écrit en PHP. Ce qui est un gros gros point :slight_smile: Quand tu écris dans le langage du moteur (XTF pour moi), tu obtiens un truc en PHP qui fonctionnera, sans que tu n’ai à te soucier des détails.

  2. Faciliter les écritures. Exemple con pour XTF :

{$foreach a as b : c do}
  {$when before do}Avant foreach si !empty(a)
  {$when inner do}Pendant foreach si !empty(a)
  {$when after do}Après foreach si !empty(a)
{$endforeach}

Etc.

D’accord, merci :slight_smile:

Non, phpBB n’uttilise pas la phplib originale ! (ils ont voulu la trafiquer et à l’image du reste de leur forum, ils ont sorti un truc pas terrible)
En effet ils utilisent bien file() (file_get_contents n’existant pas sous PHP3)
Or pas d’eval (fonction horriblement lourde !)
Un commentaire interessant php.net:

Donc bye eval() trop longue
et puis il y a une meilleure solution

Sinon tu fais comment exactement sans regexp ? pour repérer les blocs ?

Ah c’est un secret de maison :slight_smile: je te suggère de lire la doc de Bison/flex pour comprendre :slight_smile:

[oui, y a des regexp pour tokeniser :)]

L’approche n’est pas la même ceci dit. Avec phplib, c’est peut-être rapide, mais tu n’as que des blocs/variables, et pratiquement rien d’autre.

Smarty est une évolution en soit, dans le sens où tu peux aller plus loin. Un exemple typique du merdier qu’est la phplib :

Tu veux afficher un arbre.

Ah!

Mais phplib ne peut pas faire appel à une fonction et profiter de la récursivité et éviter la catastrophe.

Braiffe;

Tout cela pour dire que j’utiliserai mon moteur de template, ne serait-ce que pour les fonctionnalités qu’il apporte, sachant que l’exécution dépend de PHP (si lent, ça sera lent, etc).

Rappel: la phplib fut le premier moteur de template, 'faut pas lui en vouloir d’être incomplète :wink:
Juste pour souligner phplib ~ but != phpbb

Sûr :slight_smile: c’est bien pour ça que je ne m’en sers pas :slight_smile: