Suite et fin de la présentation de frameworks PHP. Après avoir parlé de Cake PHP, Symfony et Seagull, je vais vous présenter trois autres frameworks, tous avec leurs spécificités.

Zend Framework




Zend framework est un framework assez récent porté par la société Zend, en charge du développement du moteur de PHP. Forcément très attendu, ce framework qui n'en est actuellement qu'à la version 0.2.0 propose déjà quelques fonctionnalités intéressantes :
  • Une implémentation de l'architecture MVC
  • Des clients pour des Web Services comme del.icio.us ou Flickr
  • Une implémentation de XML-RPC
  • Des objets base de données pour faciliter les requêtes SQL
  • Une gestion du RSS et du PDF
Bien qu'il n'existe pas encore de gestion native de l'Ajax, cela pourrait être une des fonctionnalités à venir, en attendant de voir une version 1 sortir. Il est à noter que la documentation, professionnalisme oblige, est très très complète. Ce framework, bien qu'assez jeune, semble donc très prometteur et fait même partie des plus utilisés au vu de la crédibilité qu'il propose, conséquence logique du fait qu'ils soient en charge de développement du moteur de PHP. A suivre donc.

Prado


Prado se différencie des autres frameworks ici présentés par une particularité assez importante : c'est le seul qui ne se calque pas sur le modèle MVC (en copiant Rails par exemple), mais lui préférant plutôt l'approche événementielle comme celle de l'ASP.NET. On y retrouve donc des composants, des événements et des propriétés plutôt que des procédures, des urls et des arguments de requête. Concernant l'Ajax, on y retrouve l'intégration de la bibliothèque Prototype et des effets script.aculo.us. Ce framework met en avant cinq bénéfices pour les développeurs :
  • La réutilisabilité de chaque composant.
  • La simplicité d'utilisation de composant via des fichiers de configuration.
  • La robustesse du code, basé sur de l'orienté objet.
  • La performance grâce à un système de cache.
  • L'intégration aux équipes de développement en séparant la couche de présentation de la couché métier.
Prado se distingue donc de part son approche événementielle, radicalement différente du reste des frameworks.

WACT


WACT (Web Application Component Toolkit) se décrit comme un framework modulaire de création d'applications web. Il implémente le modèle MVC ainsi que de nombreux design patterns tel que Front Controller ou Application Controller. On y retrouve également deux grands paradigmes de la méthode eXtreme programming : le ramaniement du code (refactoring) et la mise en place de tests unitaires, via le framework Simple Test (de la même équipe).

Il semble tout de même assez étonnant que ce framework n'adopte pas d'intégration Ajax ou même de gestion de cache. L'accent est plus mis par exemple sur un très bon moteur de templates et surtout sur un aspect sécuritaire poussé. En effet, la sécurité des applications n'est pas forcément assurée en utilisant un framework, et WACT propose ici des bonnes pratiques et les moyens de les mettre en place via leur solution pour proposer des applications robuste et sécurisée. On pourrait croire que WACT semble dépassé, mais il faut plutôt voir une spécialisation dans un domaine face à une concurrence de qualité.

Bilan


Après avoir passé en revue six frameworks PHP, on peut rapidement en tirer quelques enseigments :
  • Ils intègrent pour la plupart des modules Ajax, basés sur Prototype et script.aculo.us. Ce qui ne peut que mettre en avant ces deux bibiliothèques.
  • Le modèle de ces frameworks est Ruby on Rails (sauf pour Prado). On ne peut ainsi cacher l'influence de Rails dont je parlerais plus longuement dans un prochain billet. Néanmoins on voit déjà que ce modèle est très apprécié et donc porté sur d'autres langages.
  • Il n'existe pas réellement de meilleur framework, mais plutôt un ensemble d'éléments, chacun spécialisé dans un domaine : la sécurité, la simplicité, etc. En fonction du besoin, on doit toujours pouvoir trouver framework à sa main.
Il ressort tout de même une grande tendance aux frameworks PHP à avoir un modèle extérieur, comme Rails. Cela montre t'il les limites du PHP ? Peut-être, mais je ne le pense pas. PHP est un très bon langage permettant de faire de bonnes choses et de manière relativement facile. Maintenant il faut voir que l'arrivée de nouvelles solutions risque d'assombrir le futur de PHP, mais vu la belle réaction de la communauté en proposant de nombreuses alternatives toutes plus bonnes les unes que les autres, on peut véritablement penser que le PHP a encore de belles années.
Depuis quelques temps fourmillent déjà de nombreux frameworks PHP. Cette nouvelle tendance veut permettre aux développeurs de mettre en place des solutions stables, avec un minimum de travail d'intégration ou d'apprentissages. En reprenant de bonnes pratiques comme celles des frameworks Rails ou Struts, certains proposent donc les mêmes fonctionnalités mais en PHP. Faisons donc un petit tour d'horizon de ces frameworks, avec bien sur un oeil sur l'intégration d'Ajax.

Ceci n'est que la première partie de cette présentation, avec les frameworks suivants : Cake PHP, Sympfony et Seagull. Le but étant de présenter les frameworks les plus intéressants et non de montrer l'intégralité des frameworks existants. La suite bientôt !

Cake PHP


C'est une implémentation de design patterns déjà utilisés (notamment dans Rails) comme l'ActiveRecord ou le FrontController, le tout proposant donc un framework MVC (Model View Controller) séparant les couches de présentation, d'accès aux données et métier. L'inspiration est donc venue notamment de Rails : on y retrouve des éléments communs comme (liste non exhaustive) :
  • Des fichiers de configuration pour la connexion à la base de données
  • Une architecture modèle / contrôleur
  • Des validateurs
  • Du scaffholding d'applications (à traduire par échafaudage d'applications... pas très parlant tout de même)
A noter également qu'un module de gestions de droits et d'authentification appelé Access Lists est inclus. En somme, un framework bien complet, ressemblant comme deux gouttes d'eau à Ruby on Rails. A noter que Cake PHP est entièrement gratuit, et que c'est un projet open source.
Concernant l'Ajax, il existe un support étendu à partir des "view helpers" d'AJAX et Javascript (View helper est un design pattern encapsulant la logique sans se soucier de la préoccupation).

Sympfony


Symfony est un framework développé par une équipe française, se basant lui aussi sur le modèle MVC en tirant son inspiration de Rails. Il est également gratuit et open source. Le but annoncé est donc de réduire le temps de développement en proposant les classes et outils nécessaires à un développement rapide et intuitif. On citera les quelques fonctionnalités suivantes (liste non exhaustive) :
  • Gestion de template
  • Système de cache
  • Du scaffholding
  • Multilingue et support d'i18n
La documentation est très bien faite, complète avec des exemples et des screencasts. L'Ajax est entièrement inclut en natif via la bibliothèque (et non librairie ;)) Prototype et quelques effets venus de script.aculo.us. En somme une gestion bien complète et relativement aisée.

Bien évidemment, Symfony propose d'autres fonctionnalités : c'est en effet l'un des frameworks les plus complets, mais cela peut parfois le desservir. Certains le trouveront trop gros, avec beaucoup de choses inutiles pour de petits sites web et pas mal de configuration. A noter également que le framework Symfony utilise PHP 5.

Seagull



Seagull est un framework datant de 2001 qui à première vue semble très agréable à prendre en main. Il se base sur quelques autres frameworks comme Mojavi, Propel ou Rails. Quelques fonctionnalités (liste non exhaustive) :
  • Compatibilité PHP 4 et 5
  • Module de CMS directement inclus
  • ORM (Object Relationnal Mapping) intégré
  • Gestion de cache
  • Pagination
  • I18n automatique
  • Respect des standards : XHTML 1.1, CSS 2.0, RSS 1.0 et 2.0
Malheuresement il n'y a pas de support d'Ajax pour ce framework, ce qui est assez inexplicable au vu de toutes les fonctionnalités présentes. Il existe néanmoins un tutoriel assez simple permettant d'intégrer Rico pour Seagull.

Premier bilan

On remarque bien évidemment que la plupart des frameworks prennent comme modèles le framework Ruby on Rails, qui fait presque figure de référence. Alors sur quel point peuvent se démarquer les frameworks PHP ? Je pense qu'il y a deux approches :
  • En fonction du besoin, choisir un framework plus ou moins complet, proposant par exemple un système d'authentification ou d'internationalisation. Certains frameworks sont plus complets que d'autres, et cela peut aider à choisir.
  • En fonction de la prise en main et de l'évolution probable du frameworks. La communauté PHP s'active et les choses avancent vite. Faire un pari sur l'avenir en "s'appropriant" l'un de ces frameworks ne serait pas forcément une mauvaise approche, reste à choisir celui qui par la suite proposera les fonctionnalités les plus utiles.
On voit également que le support interne d'Ajax s'effectue souvent en utilisant des bibliothèques ayant déjà fait leurs preuves. Cela semble être une condition quasi-obligatoire de proposer de l'Ajax en ces temps de Web 2.0.

Dans la suite de cet article, je présenterais d'autres frameworks qui me semblent intéressants et/ou prometteurs.

Rechercher