Zend Framework Vs Symfony
20 September 2011 par Franck de VédrinesDe plus en plus de Framework sont disponibles sur le marché et il devient difficile d'en choisir un qui réponde à nos besoins. Il est bon de prendre en compte plusieurs critères avant de faire son choix. Nous comparerons dans cet article deux Framework majeurs dans le monde du Web (PHP) et orientés MVC (Modèle-Vue-Contrôleur) : Zend Framework ainsi que Symfony.
Pour ces deux Frameworks, nous verrons comment les installer, puis nous les présenterons dans leur globalité, en évaluant leurs forces, leurs limites. Nous comparerons également leur documentation ainsi que leur communauté d'utilisateurs. Enfin, nous montrerons un exemple simple d'utilisation.
Zend Framework
Le Framework Zend a été développé en 2005 par Zend Technologies et est actuellement distribuée sous la nouvelle licence BSD. Il est de plus en plus utilisé dans le monde professionnel et son évolution est constante.
Prérequis
Bien entendu, pour pouvoir utiliser ce Framework, vous devez posséder de bonnes connaissances en PHP. De plus, vous devez posséder la version 5.1.4 (ou ultérieur) de PHP.
Concernant Apache, vous devez activer le module « mod_rewrite » et vous assurez que vous avez mis « AllowOverride » à All dans la configuration de votre VirtualHost, sous peine d'avoir des erreurs 404.
Installation
L'installation de Zend Framework est relativement simple. Tout d'abord, vous pouvez télécharger la dernière version sur le site officiel de Zend. Je vous conseille de télécharger la version « full », contenant toutes les bibliothèques nécessaires, des exemples d'utilisation ainsi que des tests unitaires.
Avant de pouvoir l'utiliser, vous devez ajouter le dossier des bibliothèques (dossier 'library') dans votre include_path. Pour ce faire, ouvrez le fichier 'index.php' situé dans le dossier 'public', et ajouter ces quelques lignes :
set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), realpath(APPLICATION_PATH . '/../'), get_include_path(), )));
Forces et fonctionnalités
Zend Framework regroupe un ensemble de composants, dont la plupart sont très utiles. Vous trouverez la liste complète des composants sur le site officiel de Zend. Voici une liste (non exhaustive) des principaux composants et fonctionnalités de Zend Framework :
- Zend_Cache : permet de mettre vos données en cache, et ceci très facilement
- Zend_Config : permet de simplifier le stockage des données de configuration en stockant les informations dans des tableaux, des fichiers XML ou bien des fichiers .ini
- Zend_Controller : composant de base du système MVC. Il permet de lier les urls aux différentes actions de votre application
- Zend_Db : Ajoute une couche d'indépendance de la base de données. Il permet ainsi d'utiliser différents SGBD
- Zend_View : Permet d'avoir un système de templates relativement simple à base de fichiers PHP. Il permet ainsi d'utiliser plusieurs moteurs de templates
- Zend_Log : Permet la gestion de logs
- Zend_Form : Permet de créer et gérer les formulaires de votre application. Il permet en outre de valider et filtrer les données
- Zend_Layout : Permet d'intégrer le contenu d'une vue dans une autre
- Zend_Auth : Permet de gérer les authentifications à votre site
- Zend_Gdata : Permet d'interagir avec les apis de Google (Calendar, Document, Picasa, Youtube, etc..)
- Zend_Pdf : Permet la gestion de document PDF (création, modification, sauvegarde, etc.)
- Zend_Translate : permet d'internationaliser facilement l'application
Comme nous pouvons le voir, les fonctionnalités offertes par ce Framework sont très puissantes.
Limites
Bien que le Zend Framework soit un framework complet, il possède cependant quelques limites :
- L'impact de l'utilisation de Zend Framework sur un serveur n'est pas négligeable
- Relativement compliqué à appréhender et bien comprendre son fonctionnement
Documentation
La documentation de Zend Framework est très complète. En effet, sur le site officiel de Zend, vous trouverez des informations détaillées sur chaque composant ainsi que sur leurs « sous-composants », avec de nombreux exemples de code.
Par exemple, la documentation du composant Zend_Gdata vous présente les différentes interactions possibles avec les API Google, et consacre une page pour chaque API.
Communauté
Une des forces du Framework Zend réside dans le fait que la communauté autour de ce Framework est très active. Le forum officiel de la communauté Francophone de Zend contient de nombreuses informations précieuses et utiles et de nombreux développeurs l'utilisent actuellement pour demander de l'aide ou proposer leurs solutions.
Exemple d'utilisation
Pour montrer la simplicité de Zend Framework, nous utiliseront un exemple très simple : le fameux « Hello World ». Nous allons créer un contrôleur « Helloworld » qui héritera de Zend_Controller_Action, ainsi que l'action writehelloworld :
Class HelloworldController extends Zend_Controller_Action { public function writehelloworldAction() { // Nous passons les variables à la vue $this->view->title = 'Hello World'; $this->view->prenom = 'Franck'; } }
Ensuite, nous créons notre vue (helloworldaction.phtml), contenant le code suivant :
<h1>Ma vue HelloWorld</h1> // Affiche "HelloWorld, je m'appelle Franck" <p><?php echo $this->title; ?>, je m'appelle <?php echo $this->prenom; ?></p>
Conclusion
Le Framework Zend est un Framework MVC très puissant et facilitant grandement le développement. Nous vous avons présenté quelques-uns des concepts de ce Framework, mais le nombre de classes et outils disponibles est bien plus grand.
Régulièrement mis à jour, chaque version apporte son lot d'amélioration (nouveaux composants, modification d'API, etc..), vous permettant de maintenir un cadre de travail toujours complet et performant.
Symfony
Symfony a été lancé en 2005 par la société Française « Sensiolabs ». C'est un Framework Open-Source MVC permettant de créer rapidement et facilement un site web complexe. Pour un projet basique, nous vous conseillons de prendre un Framework plus simple d'utilisation, car il requiert de nombreuses manipulations avant d'être fonctionnel.
Prérequis
Pour que Symfony fonctionne, il est nécéssaire de réaliser quelques opérations qui peuvent être assez laborieuse.
Tout d'abord, il faut installer PEAR (Php Extension and Application Repository), une extension de PHP permettant d'automatiser l'installation, la mise à jour ainsi que la suppression de bibliothèques PHP. Pour installer PEAR, ouvrez l'invite de commandes Windows et tapper :
$cd C:\wamp\bin\php\php5.3.0 (suivant le dossier d'installation de wamp et la version de PHP) $go-pear.bat (appuyer sur Entrée à chaque fois qu'une question vous est posée, pour effectuer une installation par défaut).
Ensuite, il va falloir ajouter PEAR dans le registre de windows PEAR. Pour cela, ouvrez le dossier 'C:\wamp\bin\php\php5.3.0' puis double-cliquez sur le fichier 'PEAR_ENV.reg'.
Ensuite, pour pouvoir utiliser Symfony en ligne de commande, il faut configurer la variable d'environnement de Windows. Pour cela, faites un clic droit sur le Poste de travail, puis cliquez sur « Propriétés ». Cliquez sur « Paramètres système avancés », puis sur « Variables d'environnement ». Dans la liste des variables, double-cliquez sur la variable « Path », et ajouter ceci à la fin :
;C:\wamp\bin\php\php5.2.8 (suivant le dossier d'installation de wamp et la version de PHP)
Installation
L'installation de Symfony et la création de projet est possible directement depuis l'invite de commandes Windows.
Ouvrez l'invite de commande Windows et tappez ceci :
$cd C:\wamp\bin\php\php5.3.0 (suivant le dossier d'installation de wamp et la version de PHP)
// Ajoute le canal symfony $pear channel-discover pear.symfony-project.com $pear install symfony/symfony // Voir la version de symfony $symfony -V
Si vous arrivez à voir la version de Symfony, cela veut dire que l'installation s'est déroulée avec succès.
Forces et fonctionnalités
Voici les principales forces de Symfony :
- Séparation du code en trois couches, selon le modèle MVC
- Support de l'internationalisation
- Support de l'AJAX
- Système de cache
- Système de configuration relativement simple (langage YAML)
- Possibilité de créer des plugins
- Couche de « Object Relational Model » (ORM) : Doctrine ou Propel
- Gestion des urls (permettant de formater une url indépendamment de sa position dans l'architecture du projet)
- Générateur de Back-Office
- La possibilité de créer des tests unitaires facilement
- Outils de debugging
- Gestion des environnements : développement, production, tests, etc...
- Génération de formulaires et validation des données
- Il est évolutif sans toucher à la structure de base
Les fonctionnalités proposées par Symfony sont presque aussi riches que celles proposées par le Framework Zend. Il en propose cependant moins, et vous ne pourrez pas, par exemple, interagir avec les API Google à travers un composant Symfony.
Limites
L'installation de Symfony est plus compliquée que celle de Zend. De même, les prérequis nécessaires sont assez contraignants, là où le Framework Zend s'installe quasiment tout seul.
De plus, Symfony est un Framework très compliqué à appréhender, à comprendre. Lorsqu'on débute, les principes de base peuvent être effrayants.
Documentation
Vous pourrez trouver la documentation officielle de Symfony sur son site officiel. Cette dernière est très complète et couvre quasiment tous les axes de développement. Par contre, elle est quasiment inexistante en Français, ce qui est peut être une grande difficulté pour ceux qui ne maîtrisent pas la langue Anglaise.
Communauté
La communauté de Symfony est très impliquée. Ainsi, vous pourrez trouver de nombreux plugins créés par les développeurs passionnés par ce Frameworks.
Exemple d'utilisation
Nous allons créer un projet de test. Ouvre l'invite de commande windows et aller dans votre dossier www :
$cd C:\www $mkdir test $cd test // Générer le projet $symfony generate :project test / / Générer le front-end $symfony generate :app test
Ensuite, à l'aide de votre navigateur, allez sur la page http://localhost/test/web/. Si l'installation du projet a fonctionné, vous devriez voir une page de test.
Conclusion
Symfony propose des fonctionnalités intéressantes et s'avère très puissant pour la mise en place d'application lourde, mais un peu trop gourmand pour de petites applications.
Références
- Documentation officielle de Symfony
- Communauté Symfony
- Documentation officielle de Zend Framework
- Forum officiel de la communauté Francophone de Zend
Conclusion générale
Zend Framework et Symfony sont deux Frameworks majeurs dans le monde du développement PHP. Leur utilisation est relativement simple (bien que Symfony demande quelques manipulations pouvant être laborieuses pour un débutant), et permet la mise en place d'un projet stable et durable.
Il propose tous deux des fonctionnalités très intéressantes, mais Zend Framework propose certaines fonctions supplémentaires qui peuvent être déterminantes dans le choix du Framework (API Google par exemple).
6 October 2011 à 15:56
Ton comparatif aurait tenu la route ya 1 an. Aujourd’hui, il existe symfony2.
De plus, tu n’es pas obligé d’installer pear pour faire fonctionner symfony1 sur wamp …. (http://www.hybridnocorp.com/tutorial/tutoriaux-php/installer-un-ou-plusieurs-projet-s-symfony-sur-wamp-2-sans-le-casser).