Les frameworks PHP
La mode actuelle en matière de programmation PHP se porte sur les frameworks. L'essor du langage Ruby, aidé par l'excellent framework Web Rails , a inspiré nombre des frameworks PHP, qui ont adopté son approche Modèle-Vue-Contrôleur (MVC), et vont parfois même jusqu'à tenter de répliquer les fonctionnalités de Rails en PHP.
Selon moi les frameworks PHP permettent de ne pas réinventer sans cesse la roue et de se baser sur une couche robuste implémentant un set de fonctionnalités de base indispensables. Ainsi le gain de temps est considérable et le code est beaucoup plus réutilisable.
Il en existe une multitude, et à ce jour la plupart du temps aucun ne répond aux attentes de tous les développeurs. Au travers de cet article, je vous expliquerai le choix que j'ai fait en matière de framework, ainsi que les différentes étapes qui m'ont conduites à choisir ce dernier.

L'architecture MVC
Le modèle MVC est une approche visant a séparer de la présentation (forme) de l'application métier (fond). En pratique cela permet à vos pages web de contenir un minimum de scripts vu que la présentation (HTML, CSS, JS, …) est dissociée du code PHP.
- Le Modèle (Model) représente la structure de données. Typiquement les classes du Modèle contiendront les fonctions permettant de récupérer, insérer et mettre à jour les informations de votre base de données.
- La Vue (View) est l'information qui est présentée à l'utilisateur.
- Le Controleur (Controller) sert d'intermédiaire entre le Modèle, la Vue et toute autre ressource nécessaire au traitement de la requête HTTP et à la génération de la page web.
Un schéma vaut toujours mieux qu'un long discours:

Lequel choisir
Il n'est franchement pas évident de choisir un framework. Quelque liens utiles:
- Comparaison de 12 frameworks PHP
- MVC Frameworks Written in PHP
- Un livre blanc de 77 pages pour comparer les treize frameworks et bibliothèques PHP « open source » les plus utilisés
Pear
A mes débuts de programmation en PHP j'utilisais PEAR. La bibliothèque PEAR a été créée dans le but d’offrir aux développeurs une méthode standardisée de partage du code PHP, encourageant l’exploitation du code réutilisable. Ainsi lorsque vous avez besoin de modules spécifiques pour vos sites web, il n’est pas nécessaire de tout recoder et de réinventer la roue.
Ce que je trouve bien c'est qu'il permet d'homogénéiser le code de votre application. De plus le nombre fonctionnalités implémentées par PEAR est énorme (Authentification, base de données, gestion des fichiers, gestion des sessions, … - bref il y a tout quoi). La documentation et la fréquence de mise à jour des packages est bonne. De plus de nombreux hébergeurs mutualisés proposent PEAR.
Néanmoins, à force de l'utiliser je l'ai trouvé un peu lent et finalement assez contraignant à l'usage.
CakePHP
C'est alors que j'ai recommencé ma recherche de framework "parfait". J'ai commencé avec CakePHP, plutot sympathique, la doc était un peu light à l'époque mais ça devrait être mieux aujourd'hui. Il y a une grande communauté derrière cake et je pense qu'il y a de nombreux projets qui l'utilisent. De ce fait, les contributions des utilisateurs tiers sont assez nombreuses.
J'ai finalement décidé de passer à autre chose car j'y trouvais un manque de modularité et quelque lenteurs mais cakePHP a fait un bout de chemin depuis et il se peut que j'aille y refaire un petit tour sous peu.
Code Igniter
Je suis ensuite passé à Code Igniter. J'avoue avoir eu le coup de coeur pour ce framework. Je l'ai pas mal utilisé. Il est très léger, rapide et couvre pas mal de fonctionnalités indispensables et la communauté est vraiment top (et le support qui s'en suit). Le cycle incrémental de MAJ est bien ce qui fait que d'une version à l'autre, vos applications marcheront. Il dispose de pas mal de "plugins" fait par les utilisateurs et la documentation est très honnêtement exceptionnelle. Néanmoins les petits points qui m'ont déçus sont:
- La fréquence de MAJ du framework est trèèèès faible si bien que les correctifs de bugs de la communauté ne sont intégrés que très taaard. De même que les ajouts de fonctionnalités sont assez rares.
- La gestion des sessions à base de cookies uniquement (les données sont stockées en cookie contrairement au système natif de PHP) est pas top à mon gout.
- Il est compatible PHP4 & 5 (ce qui en soit peut être un atout
) mais je voulais un framework qui tire profit des ajouts de PHP5.
Dites bonjour à Kohana
J'ai donc décidé de faire le pas et je me suis lancé dans un framework nommé Kohana qui est en fait un fork (un clone) de Code Igniter basé sur ce dernier. Il a donc la légéreté et la rapidité de Code Igniter mais apporte les ajouts suviants (liste des fonctionnalités ici):
- Full PHP5 (tire parti de ses atouts comme l'<auto loading>)
- Full Objet
- Une réactivité incroyable et une communauté à l'écoute. Postez un ticket pour une demande d'ajout de fonctionnalité, si elle est jugée bien elle sera implémentée. Postez un bug, il sera corrigé dans la semaine.
- Une gestion des sessions super à base de drivers: vous pouvez stocker vos données de session en cookie, en natif PHP ou dans une base de données.
- Un système d'évènements assez bien fait et la possibilité d'étendre le framework le plus souplement possible.
Il y a quand même des moins tels que la maturité du projet qui est encore faible, la communauté n'est pas encore très bien fournie, la documentation est light et il semble être destiné à un public averti.
Mais bon, j'ai décidé de l'utiliser et pour l'instant j'en suis pleinement satisfait. Je posterai sur ce site des articles pour vous aider dans la prise en main de ce framework.
quins Says:
Pear est plutôt entre la librairie et le framework je le mettrais à part car pear bénéficie d'une portabilité très flexible elle est notamment utilisé avec symfony ou bien encore zend.
Je compte me mettre à Kohana justement c'est un collègue de travail qui m'a fait connaître ce framework et je cherchais justement un petit (tout est relatif) framework afin d'éviter d'utiliser symfony. Symfony je l'utilise seulement pour de gros projet d'application au taff et pour triper aussi chez moi :).
Kohana est très bien structuré je trouve et la communauté est très active, je le trouve bien mieux que codeigniter.
Posted on août 20th, 2010 at 4:08