Retour au site
Connexion : S'inscrire

16 messages
Filtrer ok

quelqu'un aurait-il smarty ?

Un expert informatique vous aide immédiatement par téléphone.
..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
 
 
Oh, Ishida-kun & Kon...

Pour ton problème, tu dois avoir ça via les channels PEAR. Encore que je me sers pas de smarty...
Modérateur Logiciel - Programmation
 
 
ah le site remarche, ils devaient être en maintenance

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 )

Tant mieux si php.net est de retour
 
 
XTF Template Engine.

un outil fait maison, php5 uniquement, et qui utilise Bison.
Modérateur Logiciel - Programmation
 
 
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

merci d'avoir répondu
 
 
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 ?
 
 
?

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).

Modérateur Logiciel - Programmation
 
 
Sans-Nom a écrit:
?

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
 
 
Sans-Nom a écrit:
La mise en cache?

le plus important c'est ça je dirais.
Alors pourquoi ne pas mettre simplement les pages de templates en cache avec PHP ?
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.
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 ?

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)

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...)

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? 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.

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

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)

2. Ne pas à se soucier de comment c'est écrit en PHP. Ce qui est un gros gros point 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.

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

Code :
{$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.
Modérateur Logiciel - Programmation
 
 
Sans-Nom a écrit:
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)

2. Ne pas à se soucier de comment c'est écrit en PHP. Ce qui est un gros gros point 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.

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

Code :
{$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
 
 
Sans-Nom a écrit:
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? 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)

2. Ne pas à se soucier de comment c'est écrit en PHP. Ce qui est un gros gros point 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.

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

Code :
{$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.

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:
www1 machine:
OS:  FreeBSD 5.2.1-RELEASE
CPU: 2 x Intel® Xeon™ CPU 2.66GHz (2657.82-MHz 686-class CPU) with Hyperthreading
MEM: 1073217536 (1023 MB)
PHP 5.1.2 (cli)
PHP 4.4.1 (Web)

www2 machine:
OS:  Linux version 2.6.14-gentoo-r5 Gentoo 3.4.3-r1, ssp-3.4.3-0, pie-8.7.7)
CPU: 2 x Dual Core AMD Opteron™ Processor 265 stepping 02 1808.357 MHz
MEM: 2060388k total
PHP 5.1.2 (cli)
PHP Version 4.4.0-pl1-gentoo (web)

dev machine:
OS:  Linux version 2.6.15-gentoo-r1 Gentoo 3.3.5.20050130-r1, ssp-3.3.5.20050130-1, pie-8.7.7.1
CPU: Intel® Pentium® 4 CPU 2.00GHz stepping 04
MEM: 516384k total,
PHP 4.4.0-pl1-gentoo (cli)
PHP Version 4.4.0-pl1-gentoo (web)

The result are as follows:

www1 - CLI
Variable functions took 0.012186050415 seconds.
call_user_func took 0.0300550460815 seconds.
eval took 0.17235994339 seconds.

www1 - Web
Variable functions took 0.017616 seconds.
call_user_func took 0.034926 seconds.
eval took 0.149618 seconds

www2 - CLI
Variable functions took 0.0065491199493408 seconds.
call_user_func took 0.019452095031738 seconds.
eval took 0.10734891891479 seconds.

www2 - Web
Variable functions took 0.01565 seconds.
call_user_func took 0.02613 seconds.
eval took 0.132258 seconds.

dev - CLI
Variable functions took 0.025176 seconds.
call_user_func took 0.047402 seconds.
eval took 0.168196 seconds.

dev - Web
Variable functions took 0.025465 seconds.
call_user_func took 0.049713 seconds.
eval took 0.20154 seconds.

On www1 - CLI, eval is about 14 times slower than calling function by using variable.
On www1 - Web, eval is about 8.5 times slower (hmm interesting. Perhaps PHP4 is faster calculating eval than PHP5)

On www2 - CLI, eval is about 16 times slower than calling function by using variable.
On www2 - Web, eval is about 8.5 times slower (about same result as www1)

On dev - CLI, eval is about 6.6 times slower than calling function by using variable.
On dev - Web, eval is about 8 times slower (about same result as www1)
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 je te suggère de lire la doc de Bison/flex pour comprendre

[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).
Modérateur Logiciel - Programmation
 
 
Rappel: la phplib fut le premier moteur de template, 'faut pas lui en vouloir d'être incomplète
Juste pour souligner phplib ~ but != phpbb
 
 
Sûr c'est bien pour ça que je ne m'en sers pas
Modérateur Logiciel - Programmation
 
 

|
 
16 messages
Un expert informatique vous aide immédiatement par téléphone.
Filtrer ok
 
Vous devez être connecté pour écrire un message !
 

 Sujets Similaires: