Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-09-2010 05:59:38

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Moteur de template et symfony2

Bonjour,

Depuis le lancement des développements de symfony2, il est envisagé d'utiliser un moteur de template (twig).

Il y a une discussion intéressante sur point sur le forum des développeurs :
http://groups.google.com/group/symfony- … 81ed247ccb

A+, Philippe
PS : pitié pas de troll. Je ne sais pas bien pourquoi mais ce point à toujours été très sensible chez les développeurs du ZF...


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#2 24-09-2010 09:12:02

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Moteur de template et symfony2

je viens de jetter un coup d'oeil à twig et il a pour moi le même défaut que smarty et ses confrères tout comme phtml d'ailleur

c'est de casser la structure du (x)Html
l'exemple le plus simple pour comprends ce que je n'aime pas dans cette approche c'est le sivant

Code:

<table>
  <tbody>
   <tr>
    <td>aa</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
   </tr>
  </tbody>
</table>

une simple table.
(X)HTML prévois qu'il ne peu pas y avoir de texte ni d'élément entre le tbody et le tr
or pour faire une boucle d'itération ce type de moteur de template introduit une syntaxe propre justement dans cette partie.

Un template ne peux être un document conforme.

j'ai intégré à ZF avec un collègue plusieurs moteurs de templates, j'ai publié une méthode pour ajouter celui de son choix. mais je reste toujours septique quant à leur usage. le gain ne m'apparait toujours pas très flagrant. et le coût est toujours présent. le premier étant de devoir apprendre un 3eme voire un 4eme ou 5eme langage
PHP + HTML (+ JavaScript) (+ SQL) + template. et qui dit moteur dit exécution dit temps.

mais c'est toujours intéressant de voire les directions envisagées pour l'évolution de produit comme Symfony

A+JYT

Dernière modification par sekaijin (24-09-2010 09:13:22)

Hors ligne

 

#3 24-09-2010 09:15:24

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Moteur de template et symfony2

Hello,

Je crois que Matthew teste Mustache en ce moment : http://github.com/weierophinney/phly_mustache

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#4 24-09-2010 09:30:07

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Moteur de template et symfony2

@sekaijin :
J'avoue que la conformité d'un template, je m'en fiche un peu, j'ai tendance à tester la conformité de la page finale. Mais des templates PHP ne sont pas conformes non plus, si ?

Sinon effectivement, tu parles souvent de PHPTAL avec lequel les templates restent conformes. Cela dit je trouve qu'il conserve une syntaxe complexe.

@les autres
Pour moi on a le bilan suivant :
Avantages d'un moteur de template
* Syntaxe plus condensée
* Code HTML beaucoup plus lisible

Défauts d'un moteur de template
* C'est compliqué de lancer un parseur gettext dessus pour les traductions
* Dans le cas de smarty (mais c'est résolu avec twig ou mustache), insérer du JS est fait de façon sale...

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#5 24-09-2010 10:00:49

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: Moteur de template et symfony2

Hello,

Je suis totalement pour un moteur de la sorte du moment qu'il est suffisamment flexible et puissant pour ne pas mélanger les deux syntaxes (php + template).

Mais le plus gros argument pour moi c'est de contraindre l'intégrateur pour éviter qu'il ne fasse n'importe quoi dans les vues.

Pour ce qui est de l'apprentissage, je ne suis pas convaincu que ça soit réellement une barrière. Mon graphiste/intégrateur qui est par ex. tout sauf un développeur (question de logique) est de toute façon déjà plus ou moins perdu même si ça fait très longtemps que nous travaillons avec PHP (par ex. "Pourquoi là c'est $objet->machin et là $objet['machin'], pff c'est trop compliqué").
En ajoutant à ça la barbarie d'une vue remplie de :

Code:

<?php echo $this->escape($this->machin->truc) ?>

(et encore c'est un exemple simple :p), pour moi il n'y a pas photo. Rien que l'abolition du "$this" est une révolution smile

Pour ce qui est de Twig, j'avoue que je ne connais pas assez, ce qui pourrait m'inquiéter c'est surtout la maturité du moteur, mais on a parfois des surprises smile

Pour les traductions gettext, je m'éloigne de plus en plus de ce type de système qui je trouve ne permet pas d'organiser correctement les traductions, mais c'est vrai que ça peut être un vrai problème.

Avec le gain de performances assez énorme qui sera apporté par les deux nouvelles versions des frameworks, c'est une bonne occasion pour apporter un mécanisme puissant pour les templates. Dans la plupart des frameworks web d'autres langages c'est assez appréciable (J2EE/Spring, RoR, etc.).

En tout cas, j'aime de plus en plus la direction que prend symfony 2 smile


A+ benjamin.

Dernière modification par Delprog (24-09-2010 10:02:17)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#6 24-09-2010 13:33:01

Ph
Membre
Date d'inscription: 02-01-2010
Messages: 40

Re: Moteur de template et symfony2

XHP de Facebook...

Mais je doute que Zend apprécie pour des raisons politiques ^^...


Zend ne doit pas bien aimer Facebook et HipHop, enfin XHP ne marche pas avec la config par defaut de PHP

Dernière modification par Ph (24-09-2010 13:36:05)

Hors ligne

 

#7 24-09-2010 20:19:41

omega2
Membre
Lieu: Boisbriand, quebec, canada
Date d'inscription: 01-04-2009
Messages: 85
Site web

Re: Moteur de template et symfony2

sekaijin : Même si on utilise pas de moteur de template mais des fichiers php d'affichage, on aura le même problème.
Le code

Code:

<table>
  <tbody>
   <?php for($i = 1; $i <= 10; $i++){ ?>
   <tr>
    <td>aa</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
   </tr>
    <?php } ?>
  </tbody>
</table>

n'est pas plus conforme (x)Html que le template smarty équivalent.

Pour moi ce qui est important pour un moteur de template, c'est que ça soit facile d'utilisation pour l'intégrateur (pas de syntaxe tiré d'un artefact trouvé au fin fond de l'univers tongue) et un minimum sécurisé (un intégrateur qui ne comprend rien au php ne devrait pas pouvoir casser tout le site en rajoutant un code php trouvé sur un mauvais site).
Côté validation (x)html, c'est la page finale que je teste, pas un template qui n'a aucune chance d'être considéré comme valide.

Hors ligne

 

#8 25-09-2010 11:35:48

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Moteur de template et symfony2

omega2 a écrit:

sekaijin : Même si on utilise pas de moteur de template mais des fichiers php d'affichage, on aura le même problème.
Le code

Code:

<table>
  <tbody>
   <?php for($i = 1; $i <= 10; $i++){ ?>
   <tr>
    <td>aa</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
   </tr>
    <?php } ?>
  </tbody>
</table>

n'est pas plus conforme (x)Html que le template smarty équivalent.

Pour moi ce qui est important pour un moteur de template, c'est que ça soit facile d'utilisation pour l'intégrateur (pas de syntaxe tiré d'un artefact trouvé au fin fond de l'univers tongue) et un minimum sécurisé (un intégrateur qui ne comprend rien au php ne devrait pas pouvoir casser tout le site en rajoutant un code php trouvé sur un mauvais site).
Côté validation (x)html, c'est la page finale que je teste, pas un template qui n'a aucune chance d'être considéré comme valide.

si tu relit mon post je dis exactement que phtml et les moteur type smarty ont tous ce genre de pb.

et que pour moi un moteur de template se doit de respecter le langage hôte. et séparer les couches présentation / traitement
sinon il n'a que peut d'intérêt

bref si je regarde beaucoup de moteur (la plus part) ils embarquent des possibilité de programmations qui font qu'on se retrouve avec du traitement dans le template ce qui est une aberration. il ne permettent pas plus qu'un simple phtml de séparer les couches. ils introduisent une langage de plus dans le tout et ne permettent toujours par de respecter le langage hôte.

bref tout cela n'a que très très peut d'intérêt.

en fait je les ai totalement abandonné depuis que je n'ai plus de vue en html
mon IHM n'est plus généré dynamiquement côté serveur mais côté client

ma vue dans Zend ne fait que créer la page html->body lier un js statique et placer un contenu JSON dans un variable js de la page

le reste c'est le JS que le fait

A+JYT

Hors ligne

 

#9 26-09-2010 20:02:32

StefC30
Membre
Date d'inscription: 28-03-2008
Messages: 35

Re: Moteur de template et symfony2

Intéressant comme séparation sekaijin.
Un petit peu de code pour nous montrer ce que cela peut donner ?

@+

Stéphan.

Hors ligne

 

#10 27-09-2010 13:22:37

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Moteur de template et symfony2

@sekaijin :
Tu parles d'une application "full javascript" où tout se passe dans une unique page ?

Parce que pour un site "classique" cette approche me paraît pas terrible pour le référencement et pour la vitesse d'affichage de la page.

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#11 27-09-2010 14:08:18

omega2
Membre
Lieu: Boisbriand, quebec, canada
Date d'inscription: 01-04-2009
Messages: 85
Site web

Re: Moteur de template et symfony2

sekaijin > C'est moi ou tu utilises maintenant le javascript + json comme d'autres utilisent XML + XSLT ?
Je suis peut être vieux jeu, mais je préfaire encore un moteur de template qui n'empêche pas totalement l'utilisation du langage natif à un système qui remplace les templates par un moteur de transformation d'affichage. C'est un avis qui n'engage évidement que moi. wink

Hors ligne

 

#12 27-09-2010 17:40:37

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Moteur de template et symfony2

je ne fait que rarement des "SITES" mais très souvent des "APPLICATION"

si il est intéressant dans un site de pouvoir référencer /mon/chemin/vers/mon/information
cela est beaucoup moins pertinent voire totalement absurde de le faire un une action comme
/Client/modifierAdresse/ ou /Facturation/CalculerBalance

donc le référencement dans ce contexte ....

pour ce qui est du chargement de ma page oui mes applications sont full JS et oui elle s'affiche vite
très vite même.

ma librairie de base et petite et se mets en cache côté client l'application démarre et ne charge que les composant JS nécessaires. les composants complémentaire se chargeant au besoin et se mettant en cache.

les echanges avec le serveur sont alors réduit au strict nécessaire. les fichiers JS (JSON) de description de l'IHM ou des structure de données ne se charge qu'une fois et comme ce sont des js statiques ils reste en cache sur le poste client. les contrôleurs js et modèle js sont des JS statiques et bénéficient du même traitement. de plus il ne sont interprétés et compilés par le moteur JS qu'une fois par session

donc contrairement à la génération d'une page HTML ou à la génération dynamique en php de JS c'est particulièrement optimisé.  et surtour interprété qu'une fois par le client. (il n'y a que si la mémoire sature qu'un segment JS déjà compilé est éjecté du cache du moteur JS)

Omega2 => il n'est pas question de remplacer les templates par un moteur de transformation mais d'utiliser les capacité du navigateur pour faire ce qu'il sait faire et décharger le serveur de fonction d'affichage qu'il ne maitrise pas.
lorsque tu écrit un phtml le serveur php interprète le phtml (avec toutes les optimisations et tout les reste)
il génère un flux textuel de description de l'ihm (en HTML ou XHTML) ce flux est envoyé au client
qui interprète ce HTML Construit une représentation interne de l'affichage à produire (le DOM)
et effectue un rendu de cette description affin de le rendre visible et opérable

la plus part du temps à cela s'ajoute un JS qui est interprété qui vient modifier la représentation interne (le DOM)
et pat la même engendre un nouveau rendu

dans mon approche la partie flux HTML généré par le serveru PHP est réduite aux minimum
le client génère un DOM vide
le JS n'a donc pas besoin de modifier l'existant et peut construire directement les objets voulus
et comme pour toute les approche il y a un rendu.

les avantage sont que si l'utilisateur affiche 30 pages de données l'interprétation et la compilation du code pour générer la table n'est fait qu'une fois seule les données transitent

en utilisant le chargement dynamique à la demande des composant JS le tout reste réactif même lors des premières utilisations.

inconvénient ça ne se prête pas du tout à un sites (même dynamique) au sens classique et pas du tout à l'indexation par les moteur de recherche.

mais essayez de trouver quelles urls de PhpMyAdmin doivent être indexées par un moteur de recherche !
PhpMyAdmin est une application et non un site son indexation n'a pas de sens.

A+JYT

Hors ligne

 

#13 27-09-2010 18:15:11

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Moteur de template et symfony2

@sekaijin : je suis tout à fait d'accord, dans le cas d'un back-office c'est tout à fait pertinent de faire un site full JS.

Globalement j'ai plutôt des sites "classiques" à faire dans mon boulot (avec une partie admin, mais la partie publique doit rester référençable).

Les problématiques de dev sont forcément assez différentes entre nos projets : finalement je suis plus dans le web classique et tu es plus dans le client-serveur smile

J'en profite pour souligner que le ZF est assez souple pour gérer proprement de problématiques de développement assez éloignées... quel bon outil tout de même smile

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#14 23-11-2010 12:58:51

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: Moteur de template et symfony2

Hello,

Je me suis amusé un peu avec Twig, et je suis plutôt emballé, ça demande pas de mal de boulot pour faire une intégration profonde dans ZF, mais j'ai commencé, et je compte l'utiliser pour migrer la couche présentation d'un de nos projets.

N'hésitez pas à tester :

Les sources : http://github.com/benjamindulau/Ano_ZFTwig

J'ai aussi écris deux articles sur le sujet :

Utiliser un moteur de template avec PHP, pourquoi ?
Utiliser Twig avec Zend Framework 1.1x

(comment ça je fais ma pub ? :p)


Enjoy smile


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages