Framework PHP – Quel framework choisir entre CodeIgniter, CakePHP, Symfony, Zend…
Sans vouloir se livrer à un comparatif effréné listant les avantages et les inconvénients entre les différents “frameworks” open-source écrit en PHP. Exercice qui révèle de la gageure tant le monde des frameworks bouillonne de nouveautés. Chez Hecube, nous pouvons nous prévaloir d’une petite série d’essais sur les principaux frameworks : CakePHP, Symfony, Zend et enfin CodeIgniter. Comme l’image l’indique en début d’article, nous ne faisons pas mystère de celui que nous avons élu, CodeIgniter. Pourquoi ? Le principale argument qui a poussé à ce choix est la SIMPLICITÉ, d’installation, d’utilisation et d’appropriation !
En effet, les frameworks PHP qui existent sur le marché sont nombreux. Des plus connus CakePHP, Zend, Symfony au dernier-né Yii, le choix est ardu mais la récompense est grande quelque soit d’ailleurs le framework qui sera employé !
Pour appuyer mes dires et illustrer les avantages de s’appuyer sur un framework, je vous invite à découvrir la dernière réalisation Hecube. Il s’agit d’un atelier de création et de personnalisation de tee-shirt dont le “frontend” est intégralement en Flash, adossé à CodeIgniter pour la sa partie “backend” et “frontend”. Pour la construction d’un site d’une page blanche, utiliser une framework, c’est une sûreté et un gain de temps non négligeable. Le première étage de la fusée a été livrée :):) Il est disponible à : http://smartbox.artiz.fr/
Au fait, qu’est-ce qu’un framework ?
La définition de framework disponible ci-dessous est celle donnée par le wikipedia. Elle a le mérite d’être assez exhaustive. Dans notre cas, on ne s’intéresse qu’aux frameworks destinés au Web.
Un framework fournit un ensemble de fonctions facilitant la création de tout ou d’une partie d’un système logiciel, ainsi qu’un guide architectural en divisant le domaine visé en modules. Un framework est habituellement implémenté à l’aide d’un langage à objets, bien que cela ne soit pas strictement nécessaire : un framework objet fournit ainsi un guide architectural en divisant le domaine visé en classes et en définissant les responsabilités de chacune ainsi que les collaborations entre classes. Ces classes peuvent être subdivisées en classes abstraites.
http://fr.wikipedia.org/wiki/Framework
Ensuite pourquoi un framework en PHP ?
Evidemment, une fois la définition donnée du framework, on n’a pas dit grand chose de plus !
Vive le ROI
Tout d’abord pourquoi du PHP par rapport à d’autre langages, tout simplement parce que PHP et son acolyte MySQL sont un standard de fait. Standard de fait car l’adoption par le plus grand nombre assèche littéralement la possibilité d’utiliser tout autre technologie si vous êtes guidé par une logique mercantile, non on dit ROI (Return On Investment, ), en clair tout sera plus simple et coûtera moins cher si vous choisissez une technologie populaire et éprouvée. Pour illustrer notre propos, penchez-vous sur les cas d’école que sont le marché de la mesure statistique avec l’apparition d’un nouvel entrant du type de Google Analytics, solution qui est en train de réduire au silence toutes les autres solutions actuelles du marché, gratuites ou payantes. Que dire alors du marché de la géolocalisation toujours avec l’ogre Google ou celui du téléphone mobile où pour une fois Apple s’est montré plus opportuniste.
Pour info : on parle, à contrario, de standard de marché. Un bonne illustration c’est l’hégémonie Windows sur le marché des systèmes d’exploitation des ordinateurs personnels.
PHP ou un autre langage ? Le dilemme du choix pionnier ou conservateur…
Certes, il existe toujours le prestige, lié à une position élitiste ou marginale, position qui consiste à défendre une technologie moribonde ou tellement pointue que vous vous trouvez être le seul expert/prescripteur à pouvoir vous débrouiller dans cet environnement. Un avantage au moins, les conférences peuvent se faire dans une cabine téléphonique, pas la peine de louer plus grand. C’est une stratégie osée mais qui peu s’avérer payante, pensez au succès de Guido van Rossum (montreur de python, aujourd’hui chez Google) ou David Heinemeier Hansson (grand danois de kobé, geek en chef chez 37signals). Tiens, puisque on évoque RoR parlons-en…
Pour certains, un des grands avantages de RoR est d’avoir susciter l’apparition des frameworks PHP. En effet, l’excellent marketing dont RoR a fait l’objet, a un temps ringardiser l’utilisation des autres langages dont PHP. Beaucoup de développeurs se demandaient si ils n’allaient pas franchir la pas et se mettre à RoR. On retrouve d’ailleurs, à mon sens, la trace de ce comparatif dans l’argumentaire commercial de CodeIgniter. Ce dernier reprend, de manière frappante, quasiment point par point les avantages du Ruby On Rails. Les créateurs de CI se sont livrés à un vrai “benchmark” des qualités de ROR en privilégiant les notions de MVC, scaffolding, routes, helpers, active record… Le tout transposé en PHP.
Pour ceux qui viendront du ROR, l’arborescence même de CI vous semblera familière car tout s’articule autour du modèle MVC (Model View Controller). Via les vidéo, on y retrouve aussi le concept CRUD (Create, Update, Delete) et le scaffolding qui a tant impressionné le populo avec RoR.
Une des choses de CI que nous avons aimé…
Une chose pratique parmi les nombreux avantages de CI, est la classe “The Profiler”. Elle vous permet de pister les erreurs et vous mettre sur la piste de “bugs” éventuels comme d’autre sur celles des “serial-killers”.
The Profiler Class will display benchmark results,
queries you have run, and $_POST data at the bottom of your pages.
This information can be useful during development in order to
help with debugging and optimization.
Extrait de http://codeigniter.com/user_guide/general/profiling.html
Activation du Profiler
/* To enable the profiler place the following function anywhere within your Controller functions. When enabled a report will be generated and inserted at the bottom of your pages. */ $this->output->enable_profiler(TRUE); |
Sinon, pour découvrir les autres domaines d’excellence de CodeIgniter, jetez un oeil sur le guide de l’utilisateur.
- CodeIgniter User Guide
Vidéos – CodeIgniter (CI)
Vidéo des créateurs de CI – Présentation CodeIgniter (CI)
Vidéo des créateurs de CI – Créer son blog en 20 minutes avec CodeIgniter Partie 1
Create Blog in 20 minutes with Codeigniter Part 1
Derek Allard – Créer une application en utilisant CodeIgniter Partie 1/3
Building an application using CodeIgniter part 1/3
Derek Allard – Créer une application en utilisant CodeIgniter Partie 2/3
Building an application using CodeIgniter part 2/3
Derek Allard – Créer une application en utilisant CodeIgniter Partie 3/3
Building an application using CodeIgniter part 3/3
Vous pouvez aussi directement aller sur le site de Derek Allard, qui met disposition les vidéos et les sources de ces explications.
- Voir plus sur le site de Derek Allard
http://www.derekallard.com/ - Les vidéos sur le site de Derek Allard
http://video.derekallard.com/
Pour aller plus loin avec CodeIgniter (CI)
- En quelques phrases le portrait sans défaut de Code Ignitor.
http://codeigniter.com/user_guide/overview/at_a_glance.html - Le site officiel
http://codeigniter.com/ - Le site des concepteurs de CodeIgniter
http://ellislab.com/ - Les vidéos d’initiation à CI
http://codeigniter.com/tutorials/ - Le guide de l’utilisateur
http://codeigniter.com/user_guide/
Quelques exemples à suivre ou pas avec CI…
- Ajax Examples with xajax + CodeIgniter. Il y a notamment un modèle de calendrier.
http://www.alexajax.com/home - CodeIgniter AJAX With jQuery. Un petit article sur l’usage de jQuery avec CI
http://michaelwales.com/ - Une bonne source sur CI. Unobtrusive AJAX with CodeIgniter and Mootools
http://pr0digy.com/codeigniter/unobtrusive-ajax-with-codeigniter-and-mootools/ CodeIgniter model productivity methods
http://pr0digy.com/codeigniter/model-productivity-methods/
Les autres frameworks
- Yii
Le dernier né des framewoks PHP à l’heure où cet article est publié.
http://www.yiiframework.com/ - CakePHP
http://cakephp.org/ - Zend
C’est sur ce framework que la solution e-commerce Magento de smile.fr a été construite
http://zend.com/ - Symfony
http://www.symfony-project.org/