Le Blog

Framework PHP - Quel framework choisir entre CodeIgniter, CakePHP, Symphony, Zend…

Publié dans Divers, Framework, PHP, MYSQL, Ruby on Rails par Bruno Flaven, le Samedi 23 mai 2009


Framewok PHP - Quel framework choisir entre CodeIgniter, CakePHP, Symphony, ZendSans 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, Symphony, 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, Symphony 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.

Vidéos - CodeIgniter (CI)

Vidéo des créateurs de CI - Présentation CodeIgniter (CI)
Image de prévisualisation YouTube

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
Image de prévisualisation YouTube

Derek Allard - Créer une application en utilisant CodeIgniter Partie 1/3
Building an application using CodeIgniter part 1/3
Image de prévisualisation YouTube

Derek Allard - Créer une application en utilisant CodeIgniter Partie 2/3
Building an application using CodeIgniter part 2/3
Image de prévisualisation YouTube

Derek Allard - Créer une application en utilisant CodeIgniter Partie 3/3
Building an application using CodeIgniter part 3/3

Image de prévisualisation YouTube

Vous pouvez aussi directement aller sur le site de Derek Allard, qui met disposition les vidéos et les sources de ces explications.

Pour aller plus loin avec CodeIgniter (CI)

Quelques exemples à suivre ou pas avec CI…

Les autres frameworks

Marque-page :
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • blogmarks
  • Spurl
  • Symbaloo
  • Technorati
  • TwitThis
  • Wikio
  • Ma.gnolia
  • MySpace
  • Netvibes
  • StumbleUpon
  • Wikio IT
  • Yigg

9 Responses to “Framework PHP - Quel framework choisir entre CodeIgniter, CakePHP, Symphony, Zend…”

  1. [...] Framework PHP - Quel framework choisir entre CodeIgniter, CakePHP, Symphony, Zend… [...]

  2. Mikaweb a écrit:

    Bonjour,

    Votre raisonnement est quelque peu simplise à mon goût.
    Autant je suis le premier à ne pas sauter sur des Frameworks comme Symfony car le temps d’apprentissage est long, je serai professionnel, longtemps que j’aurai déjà franchi le pas, et ma foie les performances sont quand même pas exceptionnelles à moins d’avoir une grosse bécane.

    Là ou CI est une erreur à mon avis, c’est que il a fait le choix, mauvais, de vouloir rester compatible avec PHP 4 ce qui de mon point de vue est une énorme erreur.

    Maintenant tous les hébergeurs sont passés à la version 5, si ce n’êst pas le cas, partez rapidement :=)

    Faut savoir évoluer et CI est réputé pour avoir une bonne communauté, je l’accorde, mais derrière il n’y a aucune mise à jours, aucune nouveauté, on se demande parfois ce qu’ils font.

    Dans la même idée et orientée Full OO PHP 5, je te propose Kohana : http://www.kohanaphp.com/

    Je te laisse un peu étudier et tu verras que c’est dans la même idée, mais mieux codé, profites des derniers avantages, des mises à jours très rapide, la communauté à son mot à dire ce qui est important.

  3. Faux, il y a régulièrement des mises à jour pour Code igniter. :)

  4. macmc a écrit:

    @Mikaweb

    Que les hébergeurs soit en PHP 5 ne change rien : CI fonctionnera parfaitement dessus.

    Ce n’est pas une erreur de la par de CI, bien au contraire.

    CI est justement ce que devrait être un framework : Le plus indépendant possible d’une version de PHP tout en nous laissant le choix (à nous et rien qu’à nous) de “dépendre” d’une version de PHP.

    Si tu regarde bien le code de CI, tu remarquera qu’il est le plus “neutre” possible. Il devrait fonctionner sur pratiquement toutes versions supérieur à la 4.3.2 sans profondes modifications. Mais il ne nous empêchera pas d’utiliser les possibilités de PHP 5 ou plus.

    Finalement, CI ne cherche pas à rester compatible avec PHP 4 mais cherche à rester compatible avec le plus de version possible de PHP. Une idée brillante. ;)

    Parce qu’à ce focaliser sur PHP 5 c’est risquer de ce casser le dents si il y a de profond chamboulement dans le version supérieurs.

  5. loo a écrit:

    La réussite de Codeigniter, c’est la transparence grâce à une documentation excellente et de nombreux exemples. On avance. Très vite, on apprivoise la bête. On pense “boulot”, pas “techno”.
    Comme dit précédemment, la stratégie d’ouverture sur plusieurs versions de PHP est une vision intelligente.
    Moi, je préfère Kohana, mais j’utilise Codeigniter parce que je n’ai malheureusement pas de temps à perdre.

  6. mikaweb a écrit:

    Ca ne regarde que moi mais persister à être compatible PHP 4 je trouve sa illogique de nos jours.

    Bien entendu que ce qui fonctionne sous php 4 fonctionnera sous la version 5, ce n’est pas un argument de votre part.

    “Parce qu’à ce focaliser sur PHP 5 c’est risquer de ce casser le dents si il y a de profond chamboulement dans le version supérieurs.”

    Je voie pas ce qui diffère que l’on soit sous PHP 5 ou 4 à ce moment-là, à moins que vous même codiez encore PHP4…

    Je pense qu’il y a bien une raison qui a poussé tous les frameworks à utiliser les nouvelles avancées offertes par PHP 5.

    Après niveau avancement, on a droit à une update, mineure, tous les quoi ? 3-4 mois quand sa va bien…C’est pas sérieux alors que quand on regarde les autres, sa carbure pour proposer toujours plus.

    Alors oui CI sera super pour un petit site sans prétention, encore que là j’irai from scratch. Mais dès qu’on a besoin de plus, on aura malheureusement pas suffisament d’outils à dispositions.

    Je me suis remis à Kohana et y a un grand décalage avec CI, on l’apercoit tout de suite. Les bases sont les mêmes, l’idée de base est identique mais ensuite toute l’architecture a été recomposée afin d’optimiser et laisser beaucoup plus d’options au développeur.
    Contrairement à CI qui empêche certaines variables de passer, les $_GET me semble-il, à moins qu’il y ait eu un changement.

    Le défaut par rapport à CI, le seul truc où il peut l’envier c’est une documentation digne de ce nom pour le reste y a pas photo.

    Ensuite il y a un autre combat, on a changé d’arène, entre Zend et Symfony. 2 poids lourds qui jouent pas dans la même courre et je pense que on va pas épiloguer là-dessus vu qu’on est tous avec de petits frameworks qui se veulent léger…enfin qui essaie ;)

  7. loo a écrit:

    Kohana, oui mais …

    Je voulais utiliser Kohana pour un nouveau projet client.
    Mon serveur dédié de production est du CentOS (une référence pour les hébergeurs). Une trentaine de sites sont installés.
    CentOS tourne en PHP 5.1.
    Kohana exige PHP 5.2 minimum.
    Dois reformater mon serveur dédié avec une autre distibution ?
    Alors là, pas question.

  8. ez publish a écrit:

    Article intéressant mais Smile n’a jamais été l’auteur de Magento.

  9. Bruno Flaven a écrit:

    @ez publish, merci de cette précision, je viens de faire une vérification sur le site de Smile d’ailleurs, dixit le site donc ” Magento est le dernier né dans le monde des outils e-commerce open source. Développé par la SSII américaine Varien, Magento fait partie de cette nouvelle génération de solutions open source professionnelle portées par un éditeur. ” A l’époque Smile faisait tellement de prosélytisme pour cet outil Magento que j’en avais conclu injustement que l’entreprise était à l’origine du projet !
    Source : http://www.smile.fr/solutions/selection-d-outils/magento
    J’en profite du même coup pour faire quelques MAJ de cet article
    Le site dont je faisais état dans cette article est officiellement sorti, adossé plus que jamais à CodeIgniter pour le frontend comme pour le backend. http://www2.artiz.fr/
    Nous avons aussi exploré Kohana, Framework PHP léger et puissant. Un article relate cette exploration : http://social.hecube.net/blog/2009/10/11/kohana-codeigniter-framework-php-un-comparatif-entre-kohana-et-codeigniter/

Répondre