Zend Framework, un framework pour développer des applications Php robustes
Publié le 21 Apr 09 à 07:55 | Catégorie : Développement Web | 14 commentaires
Zend Framework est un framework Php open source et gratuit. Il propose tout le nécessaire pour développer une application web conséquente supportant un modèle objet. Grâce à ses différentes briques logicielles, il est donc très facile d’interagir avec la base de données, d’internationaliser l’interface utilisateur, de gérer une liste d’accès et de permissions, de mettre en place un mécanisme de cache ou encore de se connecter à un service web.
Lorsque j’ai démarré le développement de Loomiz (qui est basée sur une architecture LAMP), j’ai étudié avec attention tous les frameworks alors disponibles à l’époque. Ruby on Rails ayant en effet ouvert une brèche, il y avait alors une prolifération d’initiatives en tout genre, mais pas encore de framework vraiment mature. Néanmoins trois d’entre eux sortaient vraiment du lot : Symfony, Zend Framework et CakePhp.
Et j’ai donc adopté Zend Framework, choix que je ne regrette absolument pas. La seule difficulté a plutôt été de composer avec un framework naissant et dont les interfaces ont mis un certain temps à se stabiliser (je suis d’ailleurs en train de revivre un peu ça avec Magento en ce moment). J’ai donc suivi toute son évolution depuis les toutes premières versions il y a plus de deux ans (0.2.0) à celle d’aujourd’hui (1.7.8).
Comme j’ai vu récemment que certaines personnes réfléchissent actuellement à basculer sur ce framework, je me suis dit qu’il serait intéressant de revenir un peu sur les raisons de mon choix :
- Extrême modularité : comme la plupart des développeurs, j’ai ma propre manière de développer. Hors Zend Framework a l’immense avantage de permettre de mettre en place n’importe quelle typologie au niveau de la structure des répertoires. C’est d’autant plus important que venant du monde Java et connaissant très bien les applications J2ee, je souhaitais pouvoir mettre en place une architecture robuste basée sur les meilleures pratiques que j’avais identifiées (point important, car le développement Php n’est pas aussi rigoureux et il faut avoir une certaine discipline pour mettre en place quelque chose de professionnel et d’évolutif).
- Très flexible : Zend Framework est un ensemble de composants avec très peu d’interdépendances, ce qui permet de ne pas tirer toutes les classes lorsqu’on veut simplement utiliser un composant. La philosophie derrière Zend Framework est de fournir toutes les briques logicielles nécessaires à 80% des cas et de laisser les développeurs implémenter le reste en enrichissant les classes du framework. Cette approche a permis de garder un code simple et complètement évolutif.
- Support de Zend : il s’agit d’un point très important et qui ne s’est pas démenti avec le temps. On sent vraiment que Zend (dont les deux fondateurs sont les principaux contributeurs de Php) pousse le framework et lui alloue toutes les ressources nécessaires. Un exemple qui ne trompe pas : si vous vous baladez sur le forum officiel, vous verrez que ce sont très souvent les mêmes personnes qui répondent aux questions. Et devinez quoi ? Il s’agit des principaux contributeurs du framework, également employés par Zend.
Bien évidemment, Zend Framework souffre quand même de quelques déficiences (même si je dois avouer que j’ai quand même du mal à en trouver) :
- Comme tous les frameworks de cette envergure, la phase d’apprentissage est assez importante (surtout avec les premières versions où il y avait très peu d’information à disposition pour savoir comment commencer à mettre au point un cas d’utilisation de base). Et dans la même idée, Zend Framework ne vous empêchera pas de définir une architecture déficiente (surtout à cause de son extrême flexibilité).
- Pendant un long moment il n’était pas possible de télécharger la documentation au format Html (il fallait alors la compiler soi-même en installant tous les outils nécessaires). Et certaines classes mériteraient d’être mieux documentées.
- Il a également fallu attendre un bon moment avant de voir apparaître des livres sur Zend Framework. Je ne saurai que trop conseiller leur achat avant de vous lancer dans le développement d’une application basée sur ce framework (celui-ci est excellent).
- L’entête de la page d’accueil et l’écusson avec le numéro de version sont vraiment très très moches (et un peu trop web 2.0 à mon goût).
Pour information, Zend fournit également un support payant, ce qui en fait donc une solution de choix pour le développement d’applications d’entreprises complexes. Mais même pour les autres types d’applications, Zend Framework ne devrait pas vous décevoir. Il est extrêmement riche et flexible, constamment mis à jour et dispose d’une communauté active. Que demander de plus ?
D’autres frameworks comme Symfony constituent également de sérieux candidats. Ensuite, il s’agit peut-être d’une question de sensibilité ou d’opportunité (si par exemple un membre de l’équipe connait déjà ce framework, il serait dommage de ne pas en profiter). Le plus important est avant tout d’utiliser un framework, tant les bénéfices sont nombreux.
A lire également
Les visiteurs qui ont vu cette page ont consulté ensuite :
- 5 gestionnaires de bugs très web 2.0 (61 lectures)
- Visualiser le rendu d’un site sur plusieurs navigateurs (40 lectures)
- Welcome to Advanced Web (19 lectures)
A savoir
La rédaction de cet article a nécessité 2 heures et 21 minutes. Si vous le souhaitez, vous pouvez être prévenu de la parution de nouveaux articles en vous abonnant par RSS ou par email.

14 commentaires à propos de “Zend Framework, un framework pour développer des applications Php robustes” :
Tout a fait d’accords avec ton points de vue.
J’ai commencé mon apprentissage du Zend Framework, il y a maintenant 1ans et demi et je dois dire que la courbe d’apprentissage est très rapide . Ce que j’entends pas la c’est que on peut avoir du mal au début (Modèle MVC, Framework Brique, Helpers en tout genre) mais dès que l’on a compris le principe, les nouveaux composants sont conçus de la même façon et donc on évolue vite.
Maintenant ce que je lui reproche c’est que c’est un framework briques (enfin reprocher est un bien grand mot). Je m’interresse de plus en plus à RubyOnRails (basé sur du Ruby) qui bénificie d’une communauté solide ainsi que d’un langage d’origine très “parlé”.
De plus, je me suis essayé il y a quelques semaines à CakePHP qui est un framework complet et je doit dire que j’ai été impressionné. C’est du Rails pour PHP (ce qui est vraiment bien).
On y retrouve la validation des données dans le modèle, des helpers, des composants, des générateurs de code pour crée son application super rapidement.
Après étendre un framework complet n’ai pas vraiment façile, il faut connaitre le framework dans tout ces recoin et ça donne l’avantage au Zend, qui peut évoluer très rapidement et simplement.
Le choix du framework dépends de l’utilisation. CakePHP est compatible PHP4, Zend est très facilement modulable, RubyOnRails est basé sur Ruby. Après (pour moi) ce qui compte ce sont les performances des frameworks en environnement de production. Si tu pouvais nous faire un retour, ce serait pas mal du tout !
En tout cas, excellent article (comme d’hab) et bonne continuation !
PS : Le projet Loomiz est arrêter ou tu va reprendre le développement ?
Clément
Clément le 21 April 2009 à 08:57 (#1)
Rester compatible PHP4 est à mon sens une faiblesse. Cake PHP ne tire pas, ou mal des avantages objets qu’apporte PHP5. Son couplage est trop élevé à mon gout ce qui rend impossible une intégration partielle du framework.
PS : c’est symFony pas symPHony
J’ai fait la même erreur au début, et j’ai lutté avec l’utilitaire en ligne de commande pendant plusieurs jours car je le croyais mal installé alors que je faisait simplement une faute d’orthographe !
brindavoine le 21 April 2009 à 09:18 (#2)
Clément : non le développement de Loomiz continue toujours, même si je ne communique pas dessus (et même si ça n’avance pas aussi vite que je voudrais… quelle frustration !).
C’est corrigé Brindavoine. Heureusement que tu étais là !
Stéphane le 21 April 2009 à 13:52 (#3)
Beau billet Stéphane !
Et content d’apprendre que tu as choisi le ZF pour tes développements.
Le débat du choix de Framework est souvent une problématique compliquée à gérer…je reste convaincu que tout est dit dans ta conclusion : le choix repose souvent sur une “question de sensibilité ou d’opportunité” mais l’essentiel est bien “d’utiliser un framework, tant les bénéfices sont nombreux.”
Pour notre propre expérience, notre activité d’agence web chez Metycea a donné lieu à un échange avec mon associé sur le choix et les raisons du choix d’un Framework pour les développements.
J’ai eu l’opportunité de travailler avec quelqu’un qui maitrise bien l’univers de Zend (raison pour laquelle nous avons aussi suivi de près la sortie de Magento).
Or, il n’est pas rare que nous croisions des développeurs qui ignorent beaucoup des bénéfices d’un framework tant la logique objet leur semble parfois compliquée…
Nicolas Basso le 21 April 2009 à 14:02 (#4)
Chouette billet !
ZF est un très bon framework mais son utilisation est un peu lourde tout de même. Il existe des méthodes bien plus simples qui respectent aussi les design patterns classiques sans pour autant devenir une usine à gaz:
Zend_Controller + Zend_Controller_Front + Zend_Controller_Router etc… pour charger une simple vue cela est un peu “too much”, et encore il y’a les Helpers & Plugins, i18n + l10n et Zend_View…
C’est un framework utile pour des petits projets comme des agrégateurs twitter par exemple mais il n’en reste pas moins puissant s’il est utilisé comme Librairie dans des projets de plus grande envergure, sans l’usine à gaz
Et puis le penchant commercial de Zend s’accentue de plus en plus au fil des années et je ne supporterai pas l’idée d’être à la mercie de la moindre idée farfelue de Zend une fois mon projet abouti…
Julien le 21 April 2009 à 16:28 (#5)
En effet, c’est un framework qui n’est pas forcément très adapté pour mettre en place un site vitrine rapidement. En revanche, je ne suis pas d’accord avec toi Julien quand tu précises que tu ne voudrais pas être dépendant d’un changement de stratégie de Zend. Je pense que c’est le même problème pour n’importe quel autre framework où tu n’as pas la main dessus. Mais j’ai du mal à voir ce qui pourrait poser un souci, mis à part un changement radical de licence ou éventuellement le passage en mode payant de ce framework (solutions franchement peu probables). Le seul risque avec un framework, c’est l’arrêt de son développement.
Stéphane le 22 April 2009 à 06:33 (#6)
Je suis également un utilisateur satisfait du Zend Framework depuis un peu plus d’un an maintenant. Au rythme des releases, on sent que ça pousse très fort derrière et c’est très bon signe. Comme ils ont su porter de JAVA et intégrer l’excellent moteur de recherche Lucene, ce serait super s’ils intègraient aussi un moteur de règles du type de Jess (en Java).
Sinon, si tu as envie de nous parler de ton experience avec Magento, je suis de ceux qui serais interessés ! Merci d’avance …
andras le 22 April 2009 à 16:36 (#7)
Pas de problème Andras, j’avais de tout manière prévu de faire un retour sur Magento très bientôt.
Stéphane le 23 April 2009 à 07:10 (#8)
Il y a aussi un autre avantage à utiliser le framework Zend ; à savoir la possibilité de passer une certification. Dans la carrière d’un développeur PHP, ce n’est pas anodin…
Personnellement j’ai fait le choix d’utiliser en premier lieu un framework facile à apprendre, qui m’a permis de maîtriser le motif MVC très rapidement: CodeIgniter. Il m’aura aidé à appréhender le ZF plus facilement.
Ben le 23 April 2009 à 09:08 (#9)
Et pourquoi as tu préféré l’utilisation de Zend en PHP plutôt que du Java avec spring MVC par exemple sur des conteneurs légers puisque tu viens du monde Java ?
Jérémy le 23 April 2009 à 11:38 (#10)
J’avais considéré, à tort malheureusement, que le manque d’hébergements mutualisés en Java constituait à l’époque un point négatif. Avec le recul, je reconnais que c’était complètement stupide, d’autant plus que j’héberge maintenant moi-même tous mes projets sur deux serveurs dédiés sur lesquels je peux évidemment déployer n’importe quel type de technologie. J’étais attiré aussi par cette facilité de déploiement. Mais j’ai sous-estimé le langage lui-même qui est beaucoup moins abouti (il n’y a pas de polymorphisme en Php) et les mécanismes de debugage qui n’ont rien à voir avec ce que l’on peut avoir en Java.
Stéphane le 25 April 2009 à 16:41 (#11)
Donc si s”était à refaire, tu partirais sur une technologie java aujourd’hui ?
Jérémy le 26 April 2009 à 14:30 (#12)
Probablement Jérémy.
Stéphane le 27 April 2009 à 06:22 (#13)
Certes Java est un langage plus abouti que PHP (même si la v5.3, puis la v6 devrait apporter des ameliorations notables). PHP a cependant à mes yeux des avantages certains au moins pour des projets menés par des petites structures :
- le developpement agile : PHP est notoirement plus facile à apprendre et on peut progessivement intégrer les principes de la POO. C’est important quand on a des développeurs qui n’ont pas de forte culture POO à la base. Le côté prototypage me semble aussi plus facile qu’en Java du fait que les contraintes du langage (notamment de typage) sont moins fortes.
- les ressources machine nécessaires : il faudra des serveurs plus “gonflés” pour faire tourner en Java la même appli qu’en PHP, surtout si elle est J2E.
Quant aux IDE, PHP dispose avec PDT sous Eclipse des mêmes outils qu’un developpeur Java (pour le developpement côté serveur).
Avec le ZF on a en quelque sorte le juste milieu entre un PHP facile à apperndre et “laxiste” et le langage java, qui pousse à une programmation très disciplinée … au prix d’un manque de liberté.
andras le 27 April 2009 à 09:26 (#14)
Ajouter un commentaire