Avant tout développement, un choix technologique est à prendre en compte et lorsque nous voulons nous simplifier la vie avec des Frameworks, on se demande toujours lequel des deux prendre.
Nous verrons alors la différence entre deux puissants Frameworks, qui offrent au final, les mêmes services mais avec une différence de taille dans le monde du développement
Ayant effectué un stage à la société Anaska pour travailler en grosse partie sur le framework Symfony et suivis le stage très complet de Julien Pauli concernant
Quelle différence entre Zendframework et Symfony ?
Evidement voilà la réponse que nous avons souvent : Zend = petit projets, Symfony = Grand Projets. Cette réponse n'est pas bien satisfaisante, car en réalité nous pouvons utiliser ces deux ci pour de très très gros projet ! (Pour un petit projet qui n'est pas amené à être évolué, il n'est pas réellement nécessaire d'en utiliser...).
Cet article n'est là que pour vous donner une idée, non pas faire la promotion de quelconque framework, mais simplement pour vous aider à choisir selon la taille de votre projet ou de vos ambitions.
Avant tout, pour ceux qui connaissent le célèbre IDE PDT pour Eclipse, je recommande de suivre cette FAQ que j'ai joliment écrit : Autocomplétion de code pour Eclipse ? qui permettra d'accélérer le développement avec Symfony.
Symfony se déploie pour une grande partie en ligne de commande : génération de module, création de table, insertions, migration, sauvegarde, gestion du portail... ce qui permet donc d'accélerer le travail en créant une base stable et liée pour ainsi fabriquer nos propres méthodes et les réutiliser aisément.
De plus, Symfony est une solution très extensible, car il est possible d'installer des plugins en une simple ligne de commande (lorsqu'ils sont référencés) et utiliser aussi des packages de Zend dont un que nous usons beaucoup pour les recherches : Lucene
Ce qui fait le charme de Symfony c'est surtout la rapidité et la simplicité de déploiement d'un portail avec l'utilisation en natif des ORM tel que Propel et Doctrine, l'utilisation de Mojavi pour le design pattern et pour finir CREOLE pour l'abstraction de bases de données.
Le seul inconvénient, c'est que ce Framework est un code factory, qui a besoin de beaucoup de connaissances en POO tout comme Zend mais surtout sur la structure de celui-ci. Evidement la simplicité de générer un module, un CRUD... nous laisse souvent faire n’importe quoi et alourdir notre projet très rapidement lorsque nous savons pas le controller et l'utiliser correctement.
Pour finir, l’outil de Test Unitaire est mis en natif sur Symfony contrairement à Zend.
Le ZendFramework est quant à lui assez différent. Le modèle MVC est définit par l'utilisateur même et requiert une bonne organisation. Mais cependant Zend à un bon argument commercial pour vendre son logiciel Zend Studio for Eclipse qui simplifie vraiment le déploiement d'un modèle et une autocompletion intégré.
Il est clair que contrairement à Symfony, le développement sur Zend et plus long et l'utilisation d'ORM moins pratique, mais permet d'un autre côté de savoir ce que l'on fait et de nous laisser la liberté de développer notre application comme nous le souhaitons.
Développer avec ZendFramework demande tout comme Symfony de bonne connaissances en POO et l'implémentation de plugins n'est pas aussi simple que sont concurrent principale. De toutes manières
Le test unitaire n'est pas intégré dans Zend et nécessite l'installation de PHPUnit .
Ces deux framework très fonctionnels et puissants, requierts sans hésitations de très bonnes connaissances en programmation php + POO inclut. Ce qui les distingues c'est d'une part leurs rapidité de déploiement (j'insiste) et leurs manières d'être flexible. Mais cependant le choix d'une des deux technologies reste encore compliquée.
Je penses que Symfony serait mieux adapté pour la réalisation de gros projets futures au sein d'une équipe, qui doit faire une réalisation à un temps donné et qui souhaite construire sur des bases stables.
Pour Zend je l'appliquerais plutôt à un projet concret évoluant dans future aussi mais avec une équipe ayant une bonne organisation et requiert une idée précise de ce que l'on souhaite faire.
Cette création est mise à disposition sous un contrat Creative Commons