Table des matières
Comparaison Zend_Framework et Symfony
Avant de commencer un projet d'application Web, la question se pose de choisir un framework sur lequel concevoir cette application. Pour Php je sens 2 préférances: Le Zend Framework et Symfony.
Les points importants nécessaires à une application :
- Interface humaine
- Découplage entre l'IHM et les règles métiers
- Conformité aux standards (w3c, xhtml, accessibilité, …)
- Gérer différents formats d'IHM (html, wap, xml, txt, voiceXml, …)
- Interface riche en fonctionnalité (Ajax)
- Adaptation facilité d'une charte graphique
- Multi-linguisme
- Interface machine
- Accès à distance (remoting: soap, rest, …)
- Accès en local (batch): utilisation de la couche métier.
- Accès aux données
- Abstraction de la BdD
- Travailler avec des Objets Php et pas des colonnes de table
- Validation des données
- Lien entre la couche données et l'interface humaine
- Phase de Développement
- Debuggage
- Tests unitaires
- Tests fonctionnels
- Phase de Production
- Déploiement: installation, configuration, mise à jour
- Tracabilité: logging
- Cache: server-side, client-side
- Scalabilité: découplage des couches pour distribution sur différents serveurs.
On the web
ANNOUNCEMENT: Bye bye Symfony.. Hello Zend By Raj Anand 2008-08-12 : la principale critique de cette article est que Symfony est piloté par le seul Fabien Potencier. Le code de Symfony ne contient presque pas de code issu de la communauté. Les propositions de la communauté ne seraient pas prise en compte.
Symfony Framework vs. Zend Framework 2007-12-05
PHP: Symfony vs. Zend 2007-11-29
The Best PHP Framework: Is Symfony Really It? 2007-01-17
Zend Framework est ce que j'appelle un “framework briques”, c'est à dire qu'il apporte au développeur un ensemble de composante, libre à lui d'utiliser ceux qu'il veut, et d'organiser son projet comme il l'entend.
Symfony est ce que j'appelle un “framework englobant”, c'est à dire qu'il conditionne l'ensemble de votre projet : il vous fournit une organisation de répertoire à respecter, un “chemin de développement” bien précis, etc…(si quelqu'un a une définition meilleure que “englobant” je suis preneur ^^).
Symfony se démarque de Zend Framework avec ses outils de génération de code. En quelques lignes de commande, vous pouvez avoir un site qui effectue les opérations de base (CRUD - Création, affichage, modification, suppression) sur toutes les tables de votre base…ce qui est largement plus long sous Zend.
on va dire que le zend framework te laisse beaucoup plus libre, mais, du coup te laisse beaucoup plus coder.
en outre, synfony a un temps d'apprentissage assez “long” au debut : il faut lire X page de doc pour configurer x fichier pour arriver a faire un crud assez sommaire, ca peut sembler dur et long a apprendre, mais, dans la durrée tu y gagne beacoup.
a l'inverse, on peut démarrer avec presque rien, pour le zend framework, le code evolue tres vite, le rendu aussi, mais on passe son temps dans la doc. (pas encore pafaite), voir dnas les sources, afin de pouvoir pregrsser, assez lentement, au final.
Mon retours sur experience sur le ZF : le zend framework te laisse beacoup plus libre, a long terme, et te permet d'etendre ses briques apr ta propres logique / tes besoins. En outre, il est contruit de facon suffisament intelligente pour repondre tres rapidement au final a des besoins tres complexes.
Mon retours sur experience sur synfonie : tu est sur un rail, tu va vite, mais tu reflechira a 2 fois avant de surclasser une brique fondamentale (tres subjectif de ma part).
j'ai utilisé cake PHP puis Zend Framework, pas encore essayer symphony…
j'aime la souplesse amenée par le ZF, mais si il faut bien le reconnaitre trop de liberté n'est pas forcément une très bonne chose…
Par contre, il y a bien 2 type de bases de code qui correspondent à mon avis à deux attitudes de developpeurs :
Les “englobants”, type symphony qui se veulent très structurants. On gagne du temps mais en adhérant à la conception des gens qui font symphony de ce qu'est une appli web. A mon avis ça botte les gens qui s'éclatent à utiliser des applis existantes et qui n'adorent pas se poser des questions de conception.
Les “librairies de code”, type ZF qui propose mais n'impose pas grand chose. Avec il reste plus de travail pour aboutir à une appli “finie” mais aussi à mon avis plus d'espace d'innovation et de création pour le developpeur. Ca botte les gens qui s'éclatent à ne pas réinventer la roue mais qui ont envie de faire les choses à leur manière.
Ce serait pas une histoire de tempérament tout ça finalement ?
le problème avec ZF c qu'il ya plain de doc mais pas un truc détaillé qui te permet de bien comprendre la logique ZF . tu commence un tuto après il te balance vers d’autres tutos et voila tu es perdu…
J'ai réalisé 3 gros projets avec symfony et 1 avec ZF. Ma préférence va a Symfony car quand on travaille en équipe le code est homogene. Je ne dis pas qu'avec ZF on fait du mauvais code. La responsabilité incombe aux developpeurs. Cela dit Symfony imposant des regles stricts de codage on se retrouve au final avec un code cohérent sur l'ensemble du projet. De plus les commandes en lignes permettent de s'affranchir de beaucoup de tache rébarbatifs. Le seul point noir est le temps d'apprentissage tres long et l'obligation de connaitre quelques Design Pattern pour comprendre son fonctionnement.