Vous êtes sur la page 1sur 38

Livre Blanc

Frameworks PHP
pour l'entreprise

Emmanuelle Gouleau
Olivier Mansour
Tristan Rivoallan
Vincent Lemaire
Xavier Lacot

Dfinition, critres de choix et analyses

version 1.0
14/05/08

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

1/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

1.

Introduction

Au moment d'industrialiser ses dveloppements, une entreprise cherche habituellement


la meilleure solution, ou en tout cas celle qui est la plus adapte ses besoins, ses
contraintes, son environnement.
Dans le cadre bien prcis du dveloppement PHP pour le Web, la situation a longtemps
t anarchique. Le faible cot d'apprentissage des bases du PHP a donn au langage une
rputation de langage amateur , ce qui l'a longtemps desservi. PHP devrait ainsi n'tre
rserv qu'aux petits projets, peu stratgiques et/ou peu critiques.
La donne a cependant peu peu chang, avec l'arrive des framework MVC et autres
framework RAD , des librairies ou ensemble de librairies conues pour faciliter et
acclrer les dveloppements. Certes crit dans un autre langage, RoR (Ruby on Rails) a
apport une nouvelle manire de voir le dveloppement Web : plus rapide, plus simple,
plus efficace. Quelques annes aprs l'apparition de RoR, PHP son tour a vu naitre
quantits de frameworks de dveloppement rapide.
Ce livre blanc prsente l'analyse effectue par Clever Age de la situation actuelle des
frameworks PHP, du point de vue de l'entreprise :

Quels sont les grands critres permettant de slectionner un framework PHP ?


Comment valuer les multiples frameworks PHP disponibles sur le march ?

Quels sont les risques choisir un framework donn ? A quel point cela engage-til l'entreprise ? Quels sont les impacts sur son infrastructure, son mode de
fonctionnement ?

Dans un contexte projet, quel est le framework PHP MVC le plus adapt votre
structure ? Quel est celui qui peut vous permettre de rationaliser plus aisment
vos dveloppements ? Quel est le plus mme d'acclrer vos travaux ?

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

2/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

2.

Sommaire

1.Introduction........................................................................................2
2.Sommaire...........................................................................................3
3.Qu'est ce qu'un framework MVC ?..........................................................5
1.L'intrt d'un framework ?........................................................................................ 5
2.Qu'est ce que MVC ?................................................................................................ 5

4.Les grands critres de choix d'un framework pour l'entreprise....................7


1.Risques pour l'utilisateur.......................................................................................... 7
2.Vues...................................................................................................................... 7
3.Performances.......................................................................................................... 7
4.Routage................................................................................................................. 8
5.Internationalisation et rgionalisation.........................................................................9
6.Outillage.................................................................................................................9
1.Journaux............................................................................................................ 9
2.Debuggage......................................................................................................... 9
3.Scaffolding........................................................................................................ 10
4.Command Line Interface.....................................................................................10
5.Environnements de dveloppement...................................................................... 10
7.Intgration avec des briques externes...................................................................... 11
8.Respect des standards............................................................................................11
1.Standards XHTML : respect du balisage................................................................ 11
2.Standards de dveloppement, utilisation de librairies reconnues..............................12
3.Implmentation correcte des RFC : l'exemple de HTTP...........................................12
9.Ajax..................................................................................................................... 13
10.Extensibilit........................................................................................................ 13
11.Authentification et permissions.............................................................................. 13
12.Scurit.............................................................................................................. 14
13.Dploiement........................................................................................................14
14.Tests unitaires et fonctionnels................................................................................14
15.Courbe d'apprentissage........................................................................................ 15
16.Aspects lgaux.................................................................................................... 15

5.CakePHP...........................................................................................16
1.Origine et motivation du framework......................................................................... 16
2.Points forts du framework....................................................................................... 16
3.Points faibles du framework.................................................................................... 16
4.Organisation des fichiers.........................................................................................17
5.Traitement d'une requte........................................................................................ 18
6.Processus d'internationalisation............................................................................... 18
7.Processus de contribution du framework................................................................... 18
8.Exemple d'extension.............................................................................................. 18
9.Courbe d'activit du framework............................................................................... 19
10.Quelques rfrences............................................................................................. 19
11.L'avis de Clever Age............................................................................................. 19

6.Code Igniter...................................................................................... 20
1.Origine et motivations du framework........................................................................20
2.Points forts du framework....................................................................................... 20
3.Points faibles du framework.................................................................................... 20
4.Organisation des fichiers.........................................................................................21

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

3/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

5.Traitement d'une requte........................................................................................ 22


6.Processus d'internationalisation............................................................................... 22
7.Processus de contribution au framework................................................................... 22
8.Exemple d'entension.............................................................................................. 23
9.Courbe d'activit du framework............................................................................... 23
10.Quelques rfrences............................................................................................. 23
11.L'avis de Clever Age............................................................................................. 23

7.Symfony...........................................................................................24
1.Origine et motivations du framework........................................................................24
2.Points forts du framework....................................................................................... 24
3.Points faibles du framework.................................................................................... 24
4.Organisation des fichiers.........................................................................................25
5.Traitement d'une requte........................................................................................ 26
6.Processus d'internationalisation............................................................................... 26
7.Processus de contribution au framework................................................................... 26
8.Gestion des extensions........................................................................................... 26
9.Courbe d'activit autour du framework..................................................................... 27
10.Implmentation de rfrence.................................................................................27
11.Quelques rfrences............................................................................................. 27
12.L'avis de Clever Age............................................................................................. 28

8.Zend Framework................................................................................29
1.Origines et motivations du framework...................................................................... 29
2.Points forts du framework....................................................................................... 29
3.Points faibles du framework.................................................................................... 29
4.Organisation des fichiers.........................................................................................30
5.Traitement d'une requte........................................................................................ 30
6.Processus d'internationalisation............................................................................... 30
7.Processus de contribution au framework................................................................... 30
8.Gestion des extensions........................................................................................... 31
9.Courbe d'activit autour du framework..................................................................... 32
10.Quelques rfrences............................................................................................. 32
11.L'avis de Clever Age............................................................................................. 32

9.valuation par la mthode QSOS.......................................................... 33


1.Tableau rcapitulatif............................................................................................... 33
2.Notes globales.......................................................................................................36

10.Conclusion...................................................................................... 38
11.Bibliographie................................................................................... 39

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

4/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

3.

Qu'est ce qu'un framework MVC ?


1. L'intrt d'un framework ?

Le terme de framework se traduit littralement par cadre de travail : dans le cas


des frameworks Web, concrtement, il s'agit d'un ensemble de librairies et d'outils qui
permettent d'amliorer la conception d'applications Web, en apportant des fonctionnalits
supplmentaires tout en ajoutant de la rigueur dans leur dveloppement. Un framework
permet galement une automatisation des tches dans la mesure o il intgre un certain
nombre de routines implmentes nativement.
Utiliser un framework, c'est donc avoir la garantie de disposer d'une architecture
cohrente, o la rigueur de dveloppement est primordiale. C'est aussi une rflexion sur
l'avenir, puisqu'un code lger, optimis et cohrent est bien plus simple maintenir et
amliorer que la trop clbre soupe de code 1.
Cependant, utiliser un framework introduit de nombreuses exigences et de la complexit,
dans la mesure o certaines habitudes de dveloppement devront tre mises de ct lors
de son adoption. Ainsi, bien qu'il soit cens amliorer la productivit de vos
dveloppements, il existe toujours une phase au cours de laquelle le cot est plus
important que le gain : ce choix dont donc tre mrement rflchi.

2. Qu'est ce que MVC ?


MVC (Model-View-Controller, soit Modle-Vue-Contrleur) est une architecture qui intgre
trois niveaux de conception suivants :
Le Modle : il s'agit du comportement de l'application. Ce niveau intgre

l'ensemble des interactions avec la base de donnes et le traitement des


donnes : il contient et manipule toutes les donnes, en grant leur slection, leur
insertion, leur modification ou leur suppression ( CRUD ). Pour cela, il propose
des mthodes spcifiques la bonne tenue de ces actions.
La Vue : il s'agit de l'interface que l'utilisateur va manipuler. Elle habille les

donnes transmises par le modle et reoit toutes les actions effectues par
l'utilisateur, sans en assurer le traitement : les actions sont transfres au
contrleur.

Le Contrleur : il prend en charge la gestion des vnements pour mettre jour

la vue ou synchroniser des informations via le modle. Il reoit toutes les actions
effectues par l'utilisateur, et effectue la dtection d'erreurs (vrification du
remplissage correct des champs d'un formulaire, par exemple). Tout comme la
vue, le contrleur n'effectue aucune modification sur les donnes, il est
uniquement charg d'appeler le modle et de renvoyer la vue concerne.

Un bon exemple valant mieux qu'un long discours, partons du principe que notre
application doit afficher une liste de clients et permettre l'ajout, la suppression et la
modification de ceux-ci.

1 Voir Coding Horror : http://www.codinghorror.com/blog/

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

5/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

Le Modle lit en base de donnes toutes les informations sur les clients, et

procde l'enregistrement des modifications apportes ceux-ci.

La Vue se charge de dcorer les donnes issues du modle (mise en gras, code

html, etc.), afficher des liens d'dition et de suppression ainsi que le formulaire de
modification des fiches clients.

Le Contrleur, quand lui, vrifie que les informations saisies dans le formulaire

de modification d'un client sont bien formates, et que tous les champs
obligatoires ont t remplis par des donnes correctement formates (que
l'adresse email est bien conforme aux standards ou que le numro de tlphone
est valide, par exemple).
Pour rsumer le principe de fonctionnement du MVC, lorsqu'un client effectue un appel
une application, la requte est analyse par le contrleur qui demande au modle
concern d'effectuer les oprations. Enfin, c'est ce mme contrleur qui va renvoyer la
vue concerne au client.

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

6/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

4.

Les grands critres de choix d'un framework


pour l'entreprise
1. Risques pour l'utilisateur

Au-del des considrations techniques qui entrent en jeu lors du choix d'un framework, il
est essentiel d'valuer les risques prsents par chacune des solutions retenues. Le
framework devant terme constituer la base de la majorit des dveloppements raliss
pour l'entreprise, il est important que sa prennit soit assure : son dveloppement doit
tre suffisamment dynamique, afin de limiter les risques d'abandon ou de fermeture du
code.
Comment valuer ces risques ? La mthode QSOS (Qualification an Selection of Open
Source software) propose quelques critres intressants, organiss selon quatre axes :
Prennit intrinsque (maturit, adoption, etc.), Solution industrialise (documentation,
packaging, etc.), Adaptabilit technique (modularit, extensibilit, etc.) et Stratgie
(direction des dveloppements, licence, etc.).

2. Vues
MVC prsente le grand intrt de permettre aux utilisateurs non dveloppeurs (comme
les web designers ou intgrateurs) de pouvoir modifier les gabarits des pages produites.
Typiquement, un web designer doit pouvoir modifier aisment la mise en forme des
templates en utilisant une syntaxe simple et, si possible, standardise.
En ce sens, il convient de se poser la question du fonctionnement du systme de gestion
de templates des frameworks, et l'adaptation ncessaire pour les personnes amenes
travailler sur ceux-ci. Il existe plusieurs cas :
Soit le framework dispose de son propre systme de gestion de templates,
Soit il utilise un moteur de templating externe (comme Smarty 2 ou PHPTal3),
Soit il permet de combiner les deux, en faisant un choix avant d'entrer en phase

de dveloppement.
En fonction des comptences internes de votre entreprise, il peut tre judicieux de ne
pas s'attacher une technologie intgrant des conventions d'critures propres (comme
les moteurs de templates) mais plutt de s'appuyer directement sur des technologies de
plus bas niveau (par exemple PHP).

3. Performances
Bien videmment, le critre de la performance est au premier plan dans l'valuation d'un
framework. Le propre du Web est la ractivit, la rapidit et la facilit d'accs
2 http://www.smarty.com
3 http://phptal.motion-twin.com

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

7/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

l'information. Aussi, mme s'il est extrmement bien conu en termes de structure et
d'architecture, un framework aux performances dplorables ne permettra pas des
dveloppements et une maintenance d'une application Web satisfaisants.
Ce critre de la performance, bien qu'il semble a priori essentiel, a trop souvent tendance
tre oubli par les dveloppeurs soucieux de l'lgance de leur code et des
technologies employes. On trouve sur le Web de nombreuses tudes de performances
( benchmarks ) qui se proposent de comparer l'efficacit des diffrents frameworks du
march, mais de telles tudes sont dans la plupart des cas prendre avec prcaution,
car trop de facteurs influent sur le rsultat final : directives de compilation de
l'interprteur, optimiseurs de cache et de performances activs, adquation des tests
effectus aux ralits du dveloppement, soucis d'optimisation de l'environnement
serveur.
En vrit, rien ne vaut une implmentation de rfrence, qui constitue la seule vritable
mise en situation de production du framework. Oubliez les benchmarks qui prtendent
mesurer au millime de seconde prs l'affichage d'un texte statique, ce ne sont
gnralement que de dsesprantes tentatives de masquer la ralit des choses.
Une prsentation de Cal Henderson (Flickr), en 2005, rsume trs bien ce point de vue,
en exprimant l'ide selon laquelle les frameworks ne passent pas l'chelle :
frameworks don't scale 4.

4. Routage
Le routing , que l'on peut traduire en franais par routage , est le mcanisme par
lequel la requte d'une URI est associe la ralisation d'une action par le framework. Le
routing prsente plusieurs intrts : filtrer les requtes effectues sur l'application,
permettre l'association de jolies URLs des actions ct serveur, mais galement
abstraire la notion d'URLs au sein de l'application.
On distingue gnralement deux types de routage :
le routage ascendant , dont le rle est d'effectuer l'acheminement d'une

requte HTTP vers le module adquat de l'application. Dans la plupart des


frameworks modernes, le routage ascendant prend en charge la lecture des
paramtres de la requte. Par exemple, une requte sur http://lacot.org/blog/
2007/07 doit permettre d'activer le module de blog de l'application, mais en plus
elle doit indiquer ce module que les variables qu'il doit prendre en compte sont
l'anne 2007 et le mois 07 .
le routage descendant , lui, favorise la portabilit et l'indpendance de

l'application vis--vis des URLs. Concrtement, il permet de gnrer des URLs


depuis le contrleur ou la vue, et favorise ainsi la sparation entre le monde
extrieur (le Web ) et le fonctionnement interne du framework. Par exemple,
l'emploi de la route interne blog avec les paramtres 2007 et 07 doit
gnrer l'url voulue, dpendante de la configuration globale de l'application
(domaine de dploiement, etc.).

Le routage est un lment trs intressant par diffrents aspects. Tout d'abord, il favorise
le rfrencement d'un site Web en facilitant la mise en place d'URLs propres, et ceci sans
le recours systmatique au mod_rewrite d'Apache2, alourdissant la charge des serveurs
Web en cas de sur-utilisation. Il procure galement d'autres gains, moins visibles et
mesurables, mais tout aussi importants : scurit de l'accs l'application, tablissement
4 Voir http://www.iamcal.com/talks/flickr_services.pps

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

8/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

de contrats entre l'application et les URIs d'appel, matrise du modle d'adressage du


projet.

5. Internationalisation et rgionalisation
En quoi cela consiste-t-il ? Selon Wikipdia, L'internationalisation d'un logiciel consiste
le prparer la rgionalisation ( localization en anglais), c'est--dire l'adaptation
des langues et des cultures diffrentes. Contrairement la rgionalisation, qui ncessite
surtout des comptences en langues, l'internationalisation est un travail essentiellement
technique, men par des programmeurs 5). Le travail d'internationalisation intervient
sur quatre parties d'un logiciel :
les contenus en base de donnes,
les textes de l'interface,
les formats rgionaux (devises, dates, etc.),
la gestion des jeux de caractres.

Bien qu'tant cruciale, cette fonctionnalit d'i18n est souvent oublie - ou carte - par
les dveloppeurs de frameworks, et n'est que rarement disponible nativement. Si ce
besoin est important pour votre projet, veillez donc bien le valider lors de la phase
d'valuation de la solution.

6. Outillage
Le terme outillage englobe tous les lments non ncessaires au bon fonctionnement
d'un framework, mais qui fournissent de l'assistance au dveloppement.

1. Journaux
Un framework doit tre capable de produire des journaux d'excution, qui doivent fournir
par dfaut suffisamment d'informations pour que le dveloppeur soit en mesure de
comprendre les tapes qui ont men une erreur. Le systme de logs d'un framework
doit permettre de journaliser des entres relatives l'excution des dveloppements
spcifiques, et il doit en outre tre flexible et extensible :
filtrage des entres en fonction d'un niveau d'erreur (debug, avertissement, erreur

fatale, etc.),
disponibilit de diffrents backends (fichier, email, xmpp, etc.),
format des messages standards,
possibilit de dvelopper des backends personnaliss.

2. Debuggage
Le debuggage correspond la recherche et l'analyse des dysfonctionnements.
5 http://fr.wikipedia.org/wiki/Internationalisation_de_logiciel

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

9/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

Mme si des outils de debuggage ne sont pas essentiels au fonctionnement d'un


framework, leur prsence favorise naturellement les conditions de dveloppement, dans
la mesure o ils permettent au dveloppeur de comprendre plus rapidement l'origine d'un
bug. Tous les dveloppements PHP peuvent employer des outils de debugging comme
Xdebug6, mais leur emploi est gnralement assez peu ais, et devrait plutt tre rserv
des besoins de profiling avancs.
C'est la raison pour laquelle de plus en plus de frameworks Web proposent des outils de
debuggage, utilisables par le dveloppeur durant la phase de dveloppement. Les
fonctionnalits couvertes par ces outils peuvent tre assez varies : affichage des
exceptions rencontres, liste des requtes de base de donnes effectues, cheminement
de la requte, etc.
En gnral, mfiez-vous des frameworks qui ne proposent pas de tels outils ; cela peut
tre le signe d'un manque d'aboutissement, et ce sera coup sr un lment pnalisant
au cours des dveloppements effectus.

3. Scaffolding
Le scaffolding, que l'on pourrait littralement traduire par chafaudage , est une
structure de base permettant d'effectuer des oprations de type CRUD (Create, Retrieve,
Update, Delete) sur une structure de donnes particulire.
Certains frameworks proposent de gnrer du code effectuant ces oprations - charge
ensuite au dveloppeur d'adapter ce code ses besoins spcifiques. D'autres frameworks
possdent des capacits d'inspection de la base de donnes, pour permettre la
gnration la vole d'un scaffolding.
Il est important de bien comprendre le mcanisme de scaffolding adopt par un
framework, afin de pouvoir en tirer le maximum. Peut-on aisment modifier les pages
gnres, leur ajouter des fonctionnalits ou modifier leur prsentation ? Existe-t-il des
extensions ou plugins de personnalisation ?

4. Command Line Interface


L'interface en ligne de commande, encore appele CLI (Commande Line Interface)
est un outil que ne proposent pas tous les frameworks. Comme son nom l'indique, il
s'agit d'un utilitaire qui permet d'effectuer en ligne de commande diffrentes oprations
au cours du dveloppement ou au cours de la vie d'une application : gnration de
modules, vidage du cache, rotation des fichiers de log, synchronisation de plusieurs
instances d'une application, cration des tables, sauvegarde, etc.
Dans certains cas, l'interface en ligne de commande est mme extensible, et autorise la
cration de taches propres au dveloppeur, dans l'objectif de rpondre aux besoins plus
spcifiques d'un projet.

5. Environnements de dveloppement
Il est important de rflchir aux capacits d'intgration du framework avec
l'environnement de dveloppement utilis au sein de l'entreprise, si celui-ci est
standardis dans votre structure :

6 http://xdebug.org

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

10/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

niveau d'intgration du langage de gabarits : la coloration syntaxique et l'auto-

compltion sont-elles supportes pour ce framework ? Existe-t-il un plugin pour


votre diteur permettant de profiter de ces fonctionnalits ?

auto-compltion du code PHP : existe-t-il un plugin compatible avec votre IDE

ajoutant l'auto-compltion des classes, mthodes et fonctions du framework ?


excution de tches rcurrentes : existe-t-il une gestion des automatismes tels

que le vidage des fichiers de cache ou de rotation des logs, l'auto-gnration de


code, ... ?
excution de tests unitaires : le framework propose-t-il la ralisation de tests de

fonctionnement de tout ou partie de votre application ?

auto-gnration de code : le framework met-il disposition un dispositif de type

CRUD (Create, Retrieve, Update, Delete) ou d'auto-gnration de back-office


permettant d'acclrer la conception de certaines tapes contraignantes et
rbarbatives du projet ?

7. Intgration avec des briques externes


Aussi complet soit-il, un framework ne fournira jamais l'intgralit des briques
ncessaires la ralisation de toutes les applications. Il peut galement arriver que
certains composants du framework ne soient pas d'une qualit suffisante. Un bon
framework doit donc permettre d'intgrer des briques externes, afin de remplacer sans
difficult certains de ses composants par d'autres. Cette intgration peut se faire de
diffrentes manires, et peut tre plus ou moins pousse. Certains frameworks se
contenteront ainsi d'inclure des librairies externes par le biais de la fonction
require() , tandis que d'autres prendront leur compte le chargement automatique de
ces librairies.
Si on omet les deux ou trois frameworks leaders du march, qui proposent dj de
nombreuses librairies pour rpondre la plupart des besoins courants du dveloppeur,
cette capacit d'extension du framework est primordiale, car elle permettra de profiter de
composants issus d'autres frameworks. videmment, si vos dveloppements font appel
un trop grand nombre de librairies externes, il sera peut tre temps de reconsidrer votre
choix de framework initial, fragilis par la diversit des briques employes.

8. Respect des standards


On le sait bien, la question des standards revient souvent lorsque l'on s'intresse au
dveloppement Web et, plus largement, au dveloppement informatique tout court.
Essentiels, surtout dans un environnement aussi htrogne que le Web, les standards
sont cependant souvent mis de ct lors du dveloppement d'une application, car leur
respect intgral constitue une tche fastidieuse intgrer. C'est regrettable, car leur
support offre souvent des avantages extrmement importants en terme d'accessibilit,
de performances et d'intgration. Un bon framework devrait donc respecter nativement
et compltement les standards d'Internet (XHTML, HTTP, email, etc.), et encourager le
dveloppeur les mettre en uvre, lorsque cela est possible.

1. Standards XHTML : respect du balisage


La qualit du respect des standards XHTML par un framework se mesure selon trois
critres :

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

11/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

Conformit des pages XHTML par dfaut : tout framework fournit un ensemble de

pages web prdfinies, comme celles destines l'affichage d'erreurs (404, 500,
etc).

Conformit du code gnr par les helpers : on utilise gnralement un framework

pour sa capacit raliser la place du dveloppeur les tches fastidieuses et


rptitives propres au dveloppement d'applications Web. Cette capacit est mise
en uvre grce la gnration automatique de code PHP et HTML.
Conformit du langage de gabarit : on utilise souvent un langage ddi pour

l'implmentation des vues. Si c'est le cas (certains framework se contentent


d'utiliser PHP), il convient de s'assurer que ce langage permet de raliser du code
conforme au standard XHTML.

2. Standards de dveloppement, utilisation de librairies reconnues


Les dveloppeurs l'origine d'un logiciel, et a fortiori d'un framework, ont beau tre
extrmement dous, documents et disponibles, la qualit du rsultat dpend toujours
trs largement des processus mis en place pour assurer la qualit et l'homognit des
dveloppements. Disposer de standards de codage clairement explicits, de rgles
syntaxiques, de mthodes de documentation des classes constituant le framework, tout
cela contribue amliorer l'homognit du produit.
Ceci dit, il est des fonctionnalits dont l'implmentation dpasse trs largement le cadre
d'un framework Web ; c'est par exemple le cas des problmatiques lies l'ObjectRelation Mapping, ou encore de la gestion des appels Ajax. Dans ces cas, s'appuyer sur
des briques logiciels externes est une bonne solution pour les concepteurs des
frameworks Web, dans la mesure o cela leur permet de se concentrer sur des
problmatiques qui n'ont pas t dj traites correctement. Reste valuer les librairies
techniques choisies, effectuer des choix judicieux, et les intgrer convenablement !

3. Implmentation correcte des RFC : l'exemple de HTTP


La guerre des navigateurs Web , qui a t largement mdiatise ces dernires annes
avec la sortie du navigateur libre Mozilla Firefox, a mis en lumire la question du support
XHTML au sein des applications Web. Cependant, il existe de nombreux autres standards
au moins aussi importants, mais souvent plus ngligs car ils ont reu un clairage moins
important au cours des dernires annes.
Le respect du standard HTTP, par exemple, est un bon critre d'valuation du respect des
standards : cette norme est complexe, tendue, et sa matrise est essentielle dans le
cadre de la recherche de bonnes performances. De nombreuses facettes de HTTP sont
souvent mal connues, et donc rarement implmentes dans les frameworks Web. C'est,
par exemple, le cas de Etags (entte HTTP renvoye par le serveur, partir de la version
1.1 du protocole, permettant d'informer le client d'un changement du contenu, afin
d'conomiser des tlchargements de contenus inutiles), des cache headers
(mcanismes permettant au client de savoir s'il doit mettre en cache les donnes), du
support de HTTP/1.1 (introduisant, notamment, une meilleure gestion du cache et de
nombreuses amliorations par rapport l'ancienne version du protocole 7), de la gestion
du pipelining (combinaison de plusieurs requtes HTTP dans une seule connexion TCP,
sans attendre les rponses correspondant ces requtes8), de l'idempotence (mme
effet d'une opration si elle est applique une ou plusieurs fois).

7 http://tools.ietf.org/html/rfc2616

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

12/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

9. Ajax
Ajax, et plus largement les technologies du Web 2.0 , est une des modes du
dveloppement Web depuis 2005/2006, et est trs pris des dveloppeurs et des
utilisateurs. Tout bon framework doit donc proposer des moyens aiss pour le mettre en
uvre.
Cependant, la question n'est pas de savoir si le framework le permet, mais surtout
comment il le permet : il n'est rellement intressant d'utiliser Ajax que si on peut le
faire de manire non intrusive 9, sans remettre en question l'accessibilit de l'application
et son utilisation dans des environnements moins riches (tlphone mobile, etc.).

10.Extensibilit
Outre la possibilit d'emploi de briques externes, un bon framework doit tre aisment
extensible, ce qui est sensiblement diffrent. En rsum, l'extensibilit d'un framework
est la capacit qu'a un dveloppeur tendre certains comportements (voire les
remplacer), sans pour autant devoir modifier le code d'origine du framework. Cette
extensibilit peut se manifester sous plusieurs formes :
hritage de classes,
emploi de plugins,
simplicit d'criture des plugins,
possibilit de choisir un ORM donn (ORM = Object-relational mapping un outil

permettant de traiter les donnes issues ou destination de base de donnes


relationnelle en base de donnes oriente objet),

possibilit de choisir le moteur de rendu des vues,


prsence d'un systme de hooks ou de mixins,
etc.

11.Authentification et permissions
L'authentification permet de contrler l'identit d'un utilisateur, tandis que les
permissions sont les droits d'accs donns l'utilisateur, en fonction de son
authentification et de son statut.
Sauf dans quelques rares cas, la plupart des applications Web dveloppes aujourd'hui
incluent la notion de compte utilisateur et, parfois, la sauvegarde de prfrences
utilisateur. Sans framework, la ralisation d'une application Web grant des profils - et
ventuellement des droits d'accs - peut rapidement tourner au cauchemar. Alors que,
bien pense, la gestion des droits d'accs aux diffrentes parties d'une application Web
peut tre enfantine mettre en place. Avant de choisir un framework pour vos
dveloppements, vous devriez donc examiner avec attention les fonctionnalits
8 http://tools.ietf.org/html/rfc2616#section-14.9
9 http://www.thefutureoftheweb.com/talks/2006-10-ajax-experience/slides/

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

13/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

supportes en matire de gestion des utilisateurs et de leurs droits d'accs.

12.Scurit
La question de la scurit est directement lie celle de l'authentification et des
permissions, mme si elle recouvre en plus d'autres problmatiques : gestion des
attaques XSS ou des injections SQL, possibilit de dni de service, etc. Tous les
frameworks ne le proposent pas, mais le filtrage des donnes entres par l'utilisateur
devrait tre une mesure de scurit systmatique, de mme que l'chappement des
donnes renvoyes au navigateur.
videmment, la question de la scurit est une question difficile valuer, car elle
dpend de nombreux autres lments que la conception intrinsque du framework : soin
apport par le dveloppeur la conception de son application, environnement de
dploiement. Ceci dit, un framework qui prend en charge des lments basiques de
scurit sera toujours d'une aide plus prcieuse qu'un framework qui lude gentiment la
question. Pour rsumer, la scurit d'un framework est un point qui doit tre examin
indpendamment des comptences des dveloppeurs qui l'emploieront, et de
l'environnement au sein duquel il sera dploy. La conception d'un framework doit donc
prendre en compte les diffrents aspects de la scurit et de la sret de
fonctionnement. Par exemple, la validation et filtrage des donnes en entre et le
contrle des informations renvoyes permettent de se librer des attaques de type XSS
ou injections SQL.

13.Dploiement
Le dveloppement d'une application n'est pas tout, il faut aussi pouvoir la mettre en
recette, production, etc. Le framework valu propose-t-il des fonctionnalits relatives
ce problme ? Autre point important, la gestion des montes en version du produit par
rapport aux applications existantes est-il possible ?
Les volutions des versions du framework entranent bien souvent des modifications
apporter au niveau du code, que ce soit dans sa structure ou ses principes de
dveloppement : est-il prvu de pouvoir travailler sur ces diffrentes versions ? De
mme, est-il possible de maintenir en production, sur un mme environnement, des
applications utilisant diffrentes versions du framework ?

14.Tests unitaires et fonctionnels


Nous ne parlons pas ici de savoir si le framework est test unitairement et
fonctionnellement (lment essentiel mais propre au critre Risques pour
l'utilisateur ), mais de la possibilit de mettre en uvre des tests pour les
dveloppements spcifiques raliss. Cette possibilit soulve gnralement d'autres
questions, directement lies :
La solution de tests employe est-elle un standard ?
Richesse de la solution de tests ? (mock objects (bouchon, alternative temporaire

permettant de remplacer un code non fonctionnel ou non dvelopp)), fixtures


(contrle effectu sur les donnes), etc.)

Intgration avec des outils existants (Selenium [SEL 2008], CruiseControl [CRU

2008], etc.)

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

14/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

15.Courbe d'apprentissage
Mme s'il est cens amliorer la productivit des quipes de dveloppement en leur
facilitant le travail, un framework Web ncessite toujours une phase d'apprentissage ne
pas ngliger, ne serait-ce que pour matriser l'outillage, ou connatre l'ensemble des
fonctionnalits disponibles : la matrise d'un framework PHP n'induit pas forcment la
connaissance et la comprhension des frameworks concurrents. Par ailleurs, les
frameworks concerns par cette tude font pour la plupart l'objet de cycles de
dveloppement trs dynamiques. Si c'est un bon point en terme d'amlioration du
produit, cela signifie cependant que les quipes de dveloppement doivent tre
pralablement formes l'emploi du framework, et capables d'organiser une veille
technologique autour du produit, de faon rester au courant des nouvelles possibilits.
La qualit de la documentation et la mise en place d'une communaut dynamique sont
primordiales pour permettre un apprentissage ais du framework. Certains produits ont
choisi de mettre en place des incubateurs de projets, d'autres mettent l'accent sur les
tutoriels, la documentation, la promotion par la communaut. Une bonne ide,
malheureusement trop rarement mise en pratique, consiste mettre en place une
implmentation de rfrence, qui met en lumire toutes les qualits du projet, et montre
comment effectuer diverses oprations (validation de formulaire, appel AJAX, etc.). Ces
implmentations de rfrence sont en gnral d'une grande aide au dveloppeur, car
elles illustrent de manire pratique les mcanismes du framework pour rpondre un
problme donn.

16.Aspects lgaux
Mme s'il elle ne participe pas la qualit de son code, la licence d'un framework est un
lment vrifier. En pratique, la plupart des frameworks PHP du march sont placs
sous des licences trs permissives, comme les licences MIT10 ou new BSD11. Cependant, il
existe quelques exceptions plus restrictives, au risque que les contributions se fassent de
faon moins spontane : en gnral, cela nuit au dynamisme du dveloppement du
framework.
Pour plus d'informations sur les licences logicielles habituellement employes, vous
pouvez consulter [GNU 2008].

10 http://www.opensource.org/licenses/mit-license.php
11 http://www.opensource.org/licenses/bsd-license.php

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

15/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

5.

CakePHP
1. Origine et motivation du framework

CakePHP est apparu en 2005, suite l'initiative de dveloppeur


polonais Michal Tatarynowicz. CakePHP a rapidement t publi
sous licence MIT et repris par une communaut de dveloppeurs
sous le nom de CakePHP. Le projet CakePHP est assez actif; il
attire de nombreuses contributions et est utilis dans une grande
quantit de projets professionnels, dont certains sont hbergs sur
CakeForge, la plateforme de dveloppement de projets en lien
avec CakePHP.
CakePHP se dfinit comme un outil dont l'objectif est d'aider les
dveloppeurs PHP crer plus aisment et rapidement des applications extensibles.
Inspir de Ruby On Rails, CakePHP implmente MVC (Modle Vue Contrleur).

2. Points forts du framework


Le framework CakePHP a le point fort de ne pas ncessiter de configuration particulire.
D'autre part, il fonctionne avec le duo PHP4/PHP5, et sa prise en main est rapide.

3. Points faibles du framework


Corollaires de ses points forts, les points faibles de CakePHP concernent principalement le
manque d'ampleur du projet, qui souffre en plus, depuis quelques temps, d'un
dynamisme moins marqu que ses concurrents. Certes, CakePHP est plus facile d'accs
que Symfony ou que le Zend Framework, mais cela se paye au prix de manques
fonctionnels marqus. Par exemple, l'outillage de CakePHP est assez restreint, l'outil en
ligne de commande tant peu efficace et, surtout, trop complexe d'utilisation.
On regrette galement la difficult d'intgration des dbogueurs PHP ou l'imposition de
conventions de nommage pour la schmatisation de base de donnes, rendant
l'adaptation d'un modle existant assez complexe.
Enfin, sa double compatibilit PHP4/PHP5 contraint CakePHP souffrir d'importantes
lenteurs dans son volution.

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

16/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

4. Organisation des fichiers


CakePHP propose, comme tous les frameworks de ce Livre Blanc, une
implmentation de MVC. Cependant, contrairement d'autres, la
notion de module n'apparat pas dans l'arborescence des fichiers du
framework. Au sein d'un projet CakePHP, tous les contrleurs sont
stocks dans le dossier controllers , tous les modles dans le
dossier models , toutes les vues dans le dossier views . Point
ngatif, cela peut nuire la productivit et la lisibilit des dossiers de
dveloppement.

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

17/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

5. Traitement d'une requte


Composants

Dispatcheur

Routes

Contrleur

Modle

Helpers

Base de
donnes

Client
Vue

lments
Template

6. Processus d'internationalisation
La gestion de l'internationalisation d'un projet est trs rcente sous CakePHP. En effet,
cette fonctionnalit, bien qu'essentielle pour un framework, n'a t apporte que depuis
la pr-version 1.2, non finalise ce jour.

7. Processus de contribution du framework


CakePHP met disposition un Trac permettant de participer au dveloppement et
l'amlioration du framework. Chaque modification est suivie par un responsable du projet
par l'intermdiaire du systme de tickets intgr Trac. De mme, la soumission
d'erreurs peut se faire par n'importe quel utilisateur et le suivi est rgulier.
CakePHP a galement mis en place un outil baptis CakeForge , qui offre un accs aux
dveloppeurs diffrents outils comme un systme de gestion de bugs, de gestion des
versions, etc. L'inscription est obligatoire mais gratuite, et permet de contribuer
efficacement n'importe quel projet, qu'il soit existant ou non. L'outil est galement
propos dans une version payante destine aux socits, et fournit un espace complet de
dveloppement priv et scuris pour les projets.

8. Exemple d'extension
CakePHP propose une bibliothque d'environ 150 extensions comme un forum, un
gestionnaire d'utilisateurs ou un systme de boutique en ligne avec gestion de caddie.

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

18/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

Il peut galement tre complt par des plugins issus de PEAR ou d'eZComponents.

9. Courbe d'activit du framework


L'activit autour de CakePHP est assez importante : bon nombre d'extensions sont
proposes par des dveloppeurs sur CakeForge. Cependant, un manque d'activit ces
derniers mois peut laisser planer des doutes sur la maintenabilit du projet dans le
temps.

10.Quelques rfrences

Mozilla Addons

NoseRub

Yale Daily News

11.L'avis de Clever Age


Bien que sa prise en main soit rapide, CakePHP souffre d'un nombre important de points
faibles, comme le manque de fonctionnalits de base (l'internationalisation, par
exemple), ce qui rduit l'intrt final du framework.
CakePHP est adapt aux projets de taille raisonnable (100 150 jours homme) dans un
contexte o l'internationalisation n'est pas ncessaire. Au del de ces besoins, il est
prfrable d'employer Symfony ou le Zend Framework.

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

19/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

6.

Code Igniter
1. Origine et motivations du framework

CodeIgniter est apparu en 2006 sous l'impulsion du


dveloppeur Rick Ellis. Il est activement dvelopp depuis.
L'objectif est de produire un framework rapide et peu
gourmand en mmoire, pouvant tre facilement et
rapidement dploy, proposant une courbe d'apprentissage rapide et restant simple
d'utilisation.
Le dveloppement du framework est largement orient vers la vitesse d'excution de ce
dernier. A ce titre, de nombreux choix ont t faits, rejetant certaines propositions
d'enrichissement de fonctionnalits afin de concentrer les efforts de dveloppement sur le
cur du framework. Le choix a galement t fait de ne pas imposer de conventions
contraignantes aux dveloppeurs et de les laisser librement appliquer les leurs.
De ce point de vue, CodeIgniter est une vrai russite, respectant totalement ses
motivations de dpart.

2. Points forts du framework


Les points forts du framework sont de manire vidente sa versatilit et son faible impact
sur les infrastructures. CodeIgniter est vraiment rapide, s'installe rapidement sur toutes
les plateformes (PHP4 et PHP5) et propose une prise en main excessivement aise. Un
programmeur PHP habitu coder lui-mme ses contrleurs et ses vues augmentera
ainsi son rendement. Il trouvera beaucoup de fonctionnalits pratiques couvrant les
besoins les plus basiques mais aussi les plus rcurrents (logs, cache, cookies, etc.).
La documentation a fait l'objet de gros efforts de la part de la communaut. Elle est
relativement simple apprhender et suffit largement un dmarrage efficace.
La compatibilit PHP4 peut tre un avantage si vos plateformes ne supportent pas PHP5,
bien qu'il soit l'heure actuelle vivement recommand d'effectuer la migration, PHP4
n'tant plus maintenu ou en passe de ne plus l'tre.

3. Points faibles du framework


CodeIgniter est un framework lger . Par conception, il laisse au dveloppeur
beaucoup de choses faire la main comme l'escaping des donnes ou l'appel des vues.
Le systme MVC prsente de graves lacunes :
la couche modle est rcente et reste facultative. Il faut pratiquement l'crire la

main, ce qui devrait dcourager la plupart des programmeurs,


les contrleurs sont monolithiques, il est difficile de rutiliser le code des

contrleurs et si leur logique devient complexe, ils sont lourds maintenir,


le systme de vue est minimal et ne propose pas non plus de mcanismes

pratiques de rutilisation. Les helpers sont assez pauvres (pas d'intgration d'Ajax

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

20/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

notamment).
Le systme de scaffolding permet uniquement d'alimenter les donnes de l'application
CodeIgniter et ne peut pas tre utilis pour construire des back-offices. CodeIgniter ne
propose rien ou pas grand chose pour grer ses applications (environnements, outils de
dboguage, ...).
Le souhait de conserver la compatibilit avec PHP4 peut tre considr comme un point
faible : le parti pris de CodeIgniter ne lui permettra pas de se hisser au niveau technique
de ses concurrents.

4. Organisation des fichiers


L'organisation par dfaut est peu scurisante, obligeant les rpertoires
contenant les librairies a tre publis sous la racine du serveur web. Il
est toutefois possible de changer cela en modifiant le paramtrage de
base. On retrouve une organisation assez logique l'intrieur du
rpertoire application . De manire gnrale, l'organisation des
fichiers est classique et efficace.
Par dfaut galement, tous les vues et contrleurs sont regroupes
sous les rpertoires views et controllers . Encore une fois, c'est
aux dveloppeurs de dcider s'ils veulent l'organiser diffremment (en
crant des sous rpertoires et en les appelant spcifiquement dans
leur code). L'organisation des fichiers est finalement assez souple,
mais doit tre fixe ds le dbut du projet.

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

21/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

5. Traitement d'une requte

Base de
donnes

Routing

Scurit

Modles

Librairies

Contrleur

Client

Helpers

Plugins

Cache

Vue

Scripts

6. Processus d'internationalisation
CodeIgniter ne supporte pas le comportement i18n standard et implmente son propre
mcanisme d'internationalisation.
Le processus d'internationalisation est gr dans autant de fichier PHP que de langues
utilises par l'application.
$lang['language_key'] = "The actual message to be shown";

Il faut ensuite utiliser la classe de langue de CodeIgniter pour accder au message :


$this->lang->line('language_key');

Ce systme est pauvre, mais reste dans la logique de l'application, car il est facilement
comprhensible par tous les dveloppeurs.

7. Processus de contribution au framework


La contribution au framework est trs contrle par la socit EllisLabs. Les principales
contributions sont la remonte de bugs dans un bug tracker spcifique au projet
CodeIgniter.
Le wiki permet toutefois assez librement de publier des contributions (librairies, hooks,
etc.) afin d'tendre le framework. De nombreuses contributions sont faites de manire un
peu dsordonne via le forum.

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

22/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

8. Exemple d'entension
CodeIgniter propose deux mcanismes pour tendre la solution : des hooks permettant
de modifier les classes de base, et des plugins.
Les hooks PHP4 permettent d'tendre et de modifier le cur du framework. Ce sont des
points d'entres prdfinis auxquels il est possible d'attacher ses propres fonctions. Huit
points d'entres sont ainsi dfinis. Ils permettent, par exemple, d'amliorer les
fonctionnalits de profiling et de cache.
Les plugins sont en ralit des collections de fonctions contribues par la communaut
CodeIgniter et destines tre appeles depuis les contrleurs ou les vues. Par exemple,
un contributeur propose un plugin pour raliser des formulaires d'upload de documents
en Ajax.
Les extensions sont majoritairement des extensions techniques du framework, on trouve
peu de modules prts l'emploi permettant directement de bnficier nativement de
nouvelles fonctionnalits.

9. Courbe d'activit du framework


La courbe d'activit du framework est en augmentation rgulire depuis la premire
version. Toutefois, peu d'acteurs professionnels semblent impliqus dans la communaut,
qui est surtout active sur forum, endroit privilgi pour obtenir de l'aide autour du
framework.
CodeIgniter sduit un grand nombre de dveloppeurs contraints par PHP4 et/ou peu au
fait des apports de PHP5. De ce fait, CodeIgniter reste le framework le plus simple
prendre en main de cette tude, mme si cette facilit s'explique par le peu de
fonctionnalits offertes nativement par le framework.
Le nombre de contributions est vraiment trs important, il est parfois difficile de faire un
choix parmi les alternatives s'offrant au dveloppeur, d'autant plus que la qualit de ces
contributions externes est assez variable et difficile estimer.

10.Quelques rfrences
Plusieurs rfrences sont disponibles sur http://codeigniter.com/projects/, mais aucun
gros acteur du Web ne semble employer Code Igniter comme la base de ses
dveloppements.

11.L'avis de Clever Age


CodeIgniter est un framework qui respecte ses promesses : simplicit, rapidit et
souplesse. Il a, en quelque sorte, les dfauts de ses qualits.
CodeIgniter est recommand pour de petits projets (moins de 100 jours homme) qui
sont contraints par la prsence de PHP4. Si vous pouvez bnficier de PHP5, il y a peu de
raisons d'utiliser CodeIgniter.

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

23/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

7.

Symfony
1. Origine et motivations du framework

Symfony est un framework dvelopp par l'entreprise


franaise Sensio. A ses origines se trouve le framework
Mojavi et, comme la plupart des frameworks de la
nouvelle gnration, Symfony s'inspire trs largement
de certains concepts de Ruby On Rails.
Symfony a t cr partir d'un constat bien simple : il n'existait pas, auparavant, de
solution PHP suffisamment vaste et bien ralise pour assurer la prennit et la rutilisabilit du code. Mme PEAR, effort lanc en 2001, ne parvient pas fournir une
rponse satisfaisante aux problmatiques rcurrentes des projets PHP : scurit, respect
d'un modle (MVC, par exemple), nommage, portabilit, etc.

2. Points forts du framework


Mme si cela conduit parfois qualifier Symfony de mastodonte, il faut bien reconnatre
que Symfony est, de tous les frameworks, celui qui propose le plus de fonctionnalits.
L'extensibilit du framework est assure par le biais des plugins, qui permettent de
profiter trs rapidement de nouvelles fonctionnalits dveloppes par d'autres
contributeurs.
Fait remarquable, Symfony dispose sans doute d'une des meilleures documentations :
l'API est quasiment intgralement documente (quelques points restent vierges de toute
explication), et les auteurs du framework ont publi un livre en dbut d'anne 2007, The
definitive Guide to Symfony, qui explique, pas pas, l'emploi de Symfony. C'est ce livre
qui, depuis, sert de documentation officielle Symfony via sa mise disposition gratuite
sur le site officiel du framework.
Un des derniers gros avantages de Symfony en tant que framework de dveloppement
est, justement, qu'il est sans doute un de ceux qui assure le mieux son rle de
framework, c'est--dire de cadre de dveloppement. Le formalisme de dveloppement et
les conventions de codage sont bien dfinis, de sorte que chaque partie du code d'un
projet trouve une place logique dans l'arborescence.

3. Points faibles du framework


Diffrentes tudes font tat d'une relative lenteur de Symfony, mais il faut tre mfiant
avec des comparaisons aussi abruptes. Tout d'abord, le propre d'un projet Web digne de
ce nom est de ne pas se limiter un simple echo Hello World. Ensuite, diffrents
exemples montrent que Symfony peut tre employ dans des environnements trs
demandeurs en terme de performances (voir les rfrences).

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

24/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

4. Organisation des fichiers


Un projet Symfony propose une structure hirarchique
d'organisation du code, sous forme d'applications elles-mme
divises en diffrents modules. Au sein de chaque module, on
trouve diffrents dossiers :
/actions
/config
/templates
/validation

Symfony emploie la syntaxe YAML pour ses fichiers de


configuration. Cette syntaxe, mme si elle ne rpond pas au
formalisme de XML, a cependant l'avantage de la simplicit.
L'extrait ci-dessous donne un exemple de fichier de configuration
de Symfony.

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

25/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

5. Traitement d'une requte

Action

Client

Accs aux
donnes
Base de
donnes

Abstraction
des donnes
(ORM)

Contrleur
principal
Modules

Layout

Vue

Template

6. Processus d'internationalisation
Symfony est sans doute le premier framework proposer une internationalisation (i18n),
reprise du framework Prado12, et une localisation (l10n) intgrales, base de fichiers
XLIFF. C'est l'un des gros points forts du framework puisque le principe est fort bien
explicit dans la documentation et relativement simple mettre en uvre.

7. Processus de contribution au framework


Le projet Symfony s'appuie sur un atelier de dveloppement compos de Trac et de
Subversion, et dispose d'une communaut vraiment vivante. Aprs obtention d'un
compte d'accs au Trac, chaque utilisateur du framework est libre de crer un ticket, de
proposer un patch, etc. Le wiki de Symfony est le lieu appropri pour discuter des
volutions majeures apporter au framework.
Les plugins, dj trs nombreux, peuvent tre contribus par le biais d'une procdure
plus simple : il suffit simplement d'attacher le plugin en pice jointe une page du wiki
pour que celui-ci soit disponible l'installation par le biais de l'outil en ligne de
commande, pour tous les utilisateurs du framework.
Outre le forum officiel, trs actif, et les mailing-lists dveloppeur et utilisateur, toutes
deux anglophones, des listes de diffusion locales sont disponibles. La liste de diffusion
symfony-fr, par exemple, permet des discussions en franais au sujet du framework.

8. Gestion des extensions


Un plugin Symfony ajoute des fonctionnalits la base fonctionnelle initiale. Ces
fonctionnalits peuvent tre de diffrentes sortes : modification du comportement par
dfaut de l'ORM, gestion des droits utilisateurs, librairies Javascript, etc. L'installation
d'un plugin Symfony est largement simplifie par l'emploi de l'interface en ligne de
commande :
12 http://www.pradosoft.com

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

26/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

$ ./symfony plugin-install http://plugins.symfony-project.com/NomDuPlugin-1.0.0.tar.gz

Structurellement, un plugin Symfony se prsente sous la forme


d'un dossier plac dans le dossier plugins/ , la racine du
projet. La structure arborescente de celui-ci est dcrite dans le
schma ci-dessous, chaque dossier tant videmment
optionnel :
Au moment de l'criture de ce document, Symfony propose plus
de 150 plugins, qui vont de la simple inclusion de librairies
externes (Swift, jQuery, etc.) l'application complte (CMS,
forum, blog, etc.).

9. Courbe d'activit autour du framework


La premire version publique de Symfony, bien qu'alors encore en bta, est apparue en
Octobre 2005. Symfony a finalement t publi en version 1.0 stable en janvier 2007.
Pour l'avenir, les prochaines mises jour majeures seront Symfony 1.1, disponible en
mai ou juin 2008, puis Symfony 2.0, dont la date de sortie n'est, l'heure actuelle, non
dfinie.
En ce qui concerne le support, les mailing-lists (googlegroups) concernant Symfony sont
trs ractives (plus de 16000 messages depuis la cration de ces groupes).

10.Implmentation de rfrence
Une implmentation de rfrence de Symfony a t ralise peu aprs le lancement de
Symfony, en Dcembre 2005 : il s'agit d'Askeet, le Digg-like du pauvre. Remise jour de
manire irrgulire, cette implmentation ne reflte malheureusement plus toute la
qualit et la richesse de Symfony, et il est frquent que les utilisateurs dbutants aient
du mal faire fonctionner l'application, mme en suivant parfaitement le guide.
Cependant, Askeet reste d'une grande aide pour les utilisateurs confirms, et permet de
bien intgrer les grands concepts architecturaux du framework.
De plus, Symfony met disposition un certain nombre de screencasts ou d'exemples de
fonctionnement d'applications, permettant une prise en main pas pas du framework
travers des cas divers et varis.

11.Quelques rfrences

Delicious - http://del.icio.us/

Yahoo! Answers - http://answers.yahoo.com/ 13

13 Voir la prsentation de Dustin Whittle, http://assets.en.oreilly.com/1/event/3/A%20Symfony%20Answer


%20Presentation.pdf

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

27/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

Symfonians - http://symfonians.net/

Richelieu Finance - http://www.richelieufinance.fr/

12.L'avis de Clever Age


Symfony est l'heure actuelle LE framework qui a le vent en poupe. En plus d'tre de
plus en plus utilis, une vrai dynamique s'est cre autour de la documentation du
framework dans de nouvelles langues, des plugins (ou les mises jour et volutions sont
frquentes), etc. L'abondance de documentation et d'exemples d'applications
fonctionnelles distribues en open source rendent son apprentissage ais.
Clever Age recommande Symfony pour la plupart des projets PHP, notamment ceux o
une dmarche d'industrialisation est engage. Symfony est particulirement adapt aux
projets volumineux (au del de 1000 j/h), mais il sera galement trs profitable aux
projets plus restreints ( partir de 50 j/h).

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

28/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

8.

Zend Framework
1. Origines et motivations du framework

Ce framework a t cr en 2006 par la socit Zend, qui est


depuis de nombreuses annes la faade commerciale de PHP.
L'objectif, pour Zend, est de parvenir crer LE framework PHP5
de rfrence.
Pour ce faire, Zend a mis en place une infrastructure de gestion
de projet libre complte (et complexe), mettant en uvre des mcanismes semblables
ceux que l'on peut trouver dans les communauts Java / Apache (RFC, incubateurs, etc).
Une fois les formalits administratives effectues, Zend donne accs aux dveloppeurs
un systme de remonte d'erreurs, de proposition d'amliorations et de dveloppement.
La qualit des composants du framework est leve, puisque le processus de
dveloppement est trs fortement contrl par la socit Zend, notamment via la
signature d'une Licence de Contribution, si l'on souhaite participer son amlioration.

2. Points forts du framework


Zend, l'acteur majeur du monde PHP, est l'origine du Zend Framework : c'est l un de
ses principaux points fort, d'autant que le framework est maintenu par des salaris
spcifiquement affects son dveloppement. Pour ces raisons, la prennit du
framework semble plutt bien assure.
De plus, Zend mise beaucoup sur le respect de conventions d'criture et de motifs de
conception. L'abondance de documentation du framework ainsi que le grand nombre de
tests unitaires raliss sur des portions du code sont un gage de srieux.
La participation l'amlioration du framework tant trs stricte, la moindre modification
effectue suit un mcanisme de surveillance trs strict, garantissant la qualit du
framework.

3. Points faibles du framework


Un de ses point fort en fait aussi sa faiblesse : le mode drastique de contribution au Zend
Framework rend son volution ralentie. En effet, les communauts sont moins actives
que sur d'autres frameworks.
Lors de la premire installation, le Zend Framework peut drouter. En effet, il faut tout
crer soi-mme, y compris le bootstrap qui servira initialiser l'application (avec
l'accs aux librairies, l'accs au contrleur, etc.).
L'intgration avec des composants d'autres frameworks semble, l'heure actuelle, assez
complexe voire impossible. La qualit de certains composants est discutable comme, par
exemple, le composant Zend_Rest_Server, dans lequel le respect du MVC est discutable.
Enfin, la gestion des routes ou encore la gestion des formulaires avec des retours
d'erreurs sont des lments manquants, mme s'ils nous semblent pourtant vitaux pour

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

29/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

un framework.

4. Organisation des fichiers


Le Zend Framework laisse au dveloppeur le choix de l'organisation des
fichiers. Le manuel propose cependant une structure de base, que chaque
projet peut librement adapter.

5. Traitement d'une requte


Routeur

Pr-envoi

Contrleur
action

Rpartiteur

Client

Objet
requte

Post-envoi

Actions
restantes ?

Oui

Non
Envoi
rponse

Objet
rponse

6. Processus d'internationalisation
Nativement, Zend Framework inclut divers composants comme Zend_Translate,
Zend_Locale, Zend_Date et Zend_Mesure pour grer l'internationalisation et la
localisation des applications. De nombreux formats sont supports, dont les formats
industriels , comme par exemple XLIFF.

7. Processus de contribution au framework


Comme nous l'voquions en prsentation, le processus de contribution au Zend
Framework est relativement complexe. Bien que bon nombre de dveloppeurs soient
freins dans leurs propositions d'amliorations, cette structure permet Zend de garantir
la qualit du code source de son framework.

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

30/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

Source : Zend

8. Gestion des extensions


Le Zend Framework est entirement extensible via l'utilisation des nombreux composants
natifs qu'il propose. Cependant, il n'existe pas de notion de plugin comme on peut en
trouver dans les autres frameworks de ce livre blanc. De plus, l'emploi d'un composant
ncessite l'inclusion de tous les composants, ce qui est plutt contraignant.
D'autres frameworks ont t dvelopps partir du Zend Framework, comme par
exemple le Zend Framework Extended14, qui apporte un certain nombre de
fonctionnalits supplmentaires l'outil. Nous pouvons galement citer
14 http://www.axel-etcheverry.com/wiki/index.php/Zend_framework_extended

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

31/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

Zendex15, qui est un systme de gestion d'extensions pour le Zend Framework.

9. Courbe d'activit autour du framework


La courbe d'activit autour du Zend Framework montre que son processus de
dveloppement est assez rapide. La premire version bta est sortie en dbut d'anne
2007, et la premire version stable (1.0) a t publie la fin juin 2007. La dernire
version stable ce jour (1.5) date de la mi-mars 2008.

10.Quelques rfrences

IBM

Nokia

Intranet M6

11.L'avis de Clever Age


Le Zend Framework a le grand avantage de bnficier de toute l'exprience de Zend,
acteur majeur dans le domaine de la professionnalisation et l'industrialisation de PHP :
son srieux ne peut que rassurer face l'avenir du framework. Cependant, la structure
modulaire du framework, bien qu'elle puisse tre un avantage selon les projets, peut
rendre le travail en quipe assez douloureux, si celle-ci n'est pas correctement quipe
en outils documentaires.
Le Zend Framework est donc rserver aux projets volumineux (plus de 500 j/h)
prsentant des contraintes techniques fortes. Par ailleurs, l'utilisation du Zend Framework
ncessite un effort documentaire tout particulier, afin de documenter toutes les
conventions adoptes lors de la phase de dveloppement.

15 http://code.google.com/p/zendex/

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

32/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

9.

valuation par la mthode QSOS


1. Tableau rcapitulatif

La mthode QSOS (Qualification et de Slection de logiciels Open Source) a t conue


pour valuer les logiciels libres et OpenSource de manire objective.
Voici la grille d'valuation, disponible sur le site de QSOS 16, axe autour des critres
permettant d'estimer les risques encourus par un utilisateur.
Pour chaque fonctionnalit, la rgle de notation est la suivante:
0 si la fonctionnalit n'est pas couverte,
1 si la fonctionnalit est partiellement couverte,
2 si la fonctionnalit est totalement couverte.

Prnit intrinsque

Cake PHP

Symfony

Zend
Framework

Code Igniter

1
date de sortie:
2005

1
date de sortie:
dcembre 2005

1
date de sortie:
2007

1
date de sortie:
2006

Maturit
ge
Stabilit
Historique, problmes
connus

2
2
2
2
version stable 1.19 version stable 1.0 version stable 1.0 version stable 1.6
2

un historique des bugs est disponible sur le site


2

1
Symfony est un
FORK de Mojavi2

0
Kohana en est un
FORK

Popularit

Rfrences

2
de nombreuses
rfrences
dont Mozilla
Addons

2
nombreiuses
rfrences
(Yahoo!, etc.). cf.
http://
symfonians.net/
applications/

2
nombreuses
rfrences (IBM,
Nokia, etc.). cf.
http://
framework.zend.c
om/community/
applications/

1
quelques
rfrences
dont Emmaus.uk

2
la communaut est
active sur les
forums ddis,
blogs et Google
Groups

2
la communaut
est importante
et
active sur les
forums ddis,
blogs et
Google Groups

2
la communaut
est importante
et
active sur les
forums ddis et
blogs

2
la communaut
est active sur
les forums ddis

Probabilit ou
provenance d'un FORK
Adoption

Communaut des
contributeurs

Publications

16 http://www.qsos.org/?lp_lang_pref=fr&page_id=3

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

33/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

parution de livres
en anglais
parution d'un livre
parution d'un livre
Architect's Guide
en anglais
en anglais
to Programming
The Definitive
CakePHP
with Zend
Guide to
Recipes
Framework et
Symfony
Zend Framework
in action

aucun livre paru

Direction des dveloppements

Equipe dirigeante

1
Larry E.Masters et
4 autres core
developpers

1
Fabien Potencier
de Sensio Labs

2
quipe de
direction
de Zend
Technologies

2
quipe de
direction
de EllisLab

Mode de direction

1
une personne

1
une personne

2
groupe de
personnes

1
une personne

Nombre de
dvloppeurs,
identification, turnover

2
une douzaine de
personnes

2
une cinquantaine
de personnes

2
une cinquantaine
de personnes

0
pas d'information
ce sujet

Activit autour des bugs

2
un suivi des bugs
est disponible
via un trac wiki

2
forum ractif et
suivi des bugs
disponibles via un
trac wiki

2
suivi des bugs
disponibles au
travers
d'un wiki ddi

2
suivi des bugs
accessible via
la page
BugTracker

Activits autour des


fonctionnalits

1
l'volution du
produit se fait sur
la
dmarche de
l'quipe de
dveloppeurs

2
une section du
forum est
consacre
pour la demande
de nouvelles
fonctionnalits

2
une page
IssueTracker est
consacre
pour la demande
de nouvelles
fonctionnalits

2
une section du
forum est
consacre
pour la demande
de nouvelles
fonctionnalits

2
Activits sur les releases release en cours:
1.2

2
release en cours:
1.1

2
release en cours:
1.5

2
release rcente:
1.6

Cake PHP

Symfony

Zend Framework

Code Igniter

Activit

Indpendance des dveloppements


Indpendance des
dveloppements
SOLUTION INDUSTRIALISEE
Services

Formation

2
Anaska, Sqli ou
encore Clever
0
Age
aucune offre de
sont par exemple
formation
des
n'est disponible
prestataires
pour ce framework
proposant une
formation
Symfony

2
Zend et Anaska
sont par exemple
0
des
aucune offre de
prestataires
formation n'est
proposant une
disponible pour ce
formation
framework
au Zend
Framework

2
plusieurs offres
1
existantes (Clever Zend technologies
Age, Sensio,
offre un
etc),
support
forums, mailing- pour ce framework
lists et Google
via son rseau
Groups

Support

0
aucune offre de
support hormis
forums, mailinglists et Google
Groups

0
aucune offre de
support hormis
les
forums et
mailing-lists

Conseil

Non Applicable

Non Applicable

Non Applicable

Non Applicable

Documentation
Documentation

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

34/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

documentation
documentation
prsente sous
dtaille
la
prsente
forme d'un guide
sous la forme d'un
de
guide de
l'utilisateur
rfrence
accessible en
disponible et
ligne et
tlchargeable en
tlchargeable
ligne
avec le
framework

documentation
prsente sous
la
forme d'un manuel
utilisateur
accessible
uniquement en
ligne

documentation
importante
prsente
sous la forme
d'un manuel
utilisateur
disponible en
ligne et en livre

Assurance qualit

Outillage

1
Aucun paquet
Debian disponible

Mthode qualit

Packaging
Source
Debian

Paquets Debian disponibles

FreeBSD

HP-UX

Mac OS X

Mandriva

NetBSD

OpenBSD

RedHat/Fedora

Solaris

SuSE

Windows

Facilit d'utilisation,
ergonomie

Non Applicable

Non Applicable

Non Applicable

Non Applicable

Administration /
Supervision

Non Applicable

Non Applicable

Non Applicable

Non Applicable

Cake PHP

Symfony

Zend Framework

Code Igniter

2
plugins

2
extensions

2
possibilit d'utiliser
des composants,
modles et plugins
additionnels

2
possibilit
d'utiliser des
plugins
additionnels

2
possibilit
d'utiliser des
extensions

2
possibilit
d'ajouter des
plugins

Cake PHP

Symfony

Zend Framework

Code Igniter

2
Licence MIT

2
Licence MIT

2
nouvelle Licence
BSD

2
Licence MIT

0
pas de protection
par dfinition

0
pas de protection
par dfinition

0
pas de protection
par dfinition

0
pas de protection
par dfinition

Exploitabilit

ADAPTABILITE TECHNIQUE
Modularit
Modularit
Travaux drivs
Facilit technique de
modification du code
existant
Facilit d'extension du
code

STRATEGIE
Licence
Permissivit

Protection contre les


forks commerciaux

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

35/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

de la licence MIT

de la licence MIT

de la licence BSD

de la licence MIT

1
existence d'une
roadmap sans
planning
prvisionnel

1
existence d'une
roadmap
sans planning
prvisionnel

1
existence d'une
roadmap sans
planning
prvisionnel

0
aucune roadmap
publie

1
Sponsor unique:
Cake Development
corp.

1
Sponsor unique:
Sensio Labs

1
Sponsor unique:
Zend technologies

1
Sponsor unique:
EllisLabs

Dtenteurs des droits


Dtenteurs des droits
Roadmap

Roadmap

Sponsor
Sponsor
Indpendance stratgique
Indpendance
stratgique

2. Notes globales
Exprime en pourcentage du score maximal atteignable, voici la rpartition des notes de
ces 4 frameworks suivant les grandes catgories analyses :
Cake PHP

Symfony

Zend Framework

Code Igniter

Prnit

80,00%

80,00%

90,00%

63,33%

Solution industrialise

50,00%

67,65%

64,71%

47,06%

Adaptabilit

83,33%

100,00%

100,00%

83,33%

Stratgie

50,00%

50,00%

41,67%

41,67%

65,83%

74,41%

74,10%

58,85%

Moyenne

Une autre prsentation, sous la forme d'un graphique radar :

Diagramme "radar" rcapitulatif


Prnit
100

50

Solution industrialise

Stratgie

Cake PHP
Symfony
Zend Framework
Code Igniter

Adaptabilit

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

36/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

10.

Conclusion

Pour une entreprise, choisir un framework de dveloppement Web n'est pas une tche
facile, dans la mesure o ce choix implique des problmatiques assez varies :
conception interne du framework, facilit de prise en main, qualits techniques, volution
future, etc.
Mais, au del des simples qualits des frameworks compars dans ce livre blanc,
plusieurs constantes sont prendre en compte avant de commencer une industrialisation
des dveloppements sur la base d'un de ces frameworks : le mode de fonctionnement
des quipes de dveloppement, d'infrastructure et de maintenance, les besoins
fonctionnels actuels et futurs, les contraintes de la plateforme d'hbergement.
Dans tous les cas, le choix d'un framework de dveloppement ne peut qu'amliorer la
qualit d'un existant qui, sans procdures, conventions ou normes, est rarement bien
conu. Reste encore dterminer quel est le framework qui conviendra le mieux vos
besoins et votre contexte.

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

37/38

Livre Blanc Frameworks PHP MVC pour l'entreprise

11.

Bibliographie

[CRU 2008] CruiseControl - http://cruisecontrol.sourceforge.net/

[GNU 2008] Various Licenses and Comments about Them - http://www.gnu.org/


philosophy/license-list.html

[SEL 2008] Slenium - http://www.openqa.org/selenium/

Clever Age 37 boulevard des Capucines 75 002 Paris Tl: 01.53.34.66.10 Fax: 01.53.34.65.20

38/38

Vous aimerez peut-être aussi