Fuelphp framework HMVC fait son entrée dans les puissants framework

Voici un ti billet qui est plutôt rare sur ce blog, car étant développeur web ainsi que référenceur ainsi que webdesigner et graphiste, je ne publie que rarement des articles qui traite de pure NTIC prog web. Mais je tenais à écrire sur le fond de ma pensée à propos de ce framework et surtout lorsque j'entends tout et n'importe quoi de la part de développeurs (bien souvent très amateur) ne sachant pas de quoi ils parlent.

Qu'est ce que Fuelphp ?

Fuelphp est un framework issue de développeurs de la branche CodeIgniter. Codeigniter est un très bon framework, personnellement j'ai développé une partie module justement en étendant le framework afin d'avoir une partie en HMVC ainsi que l'intégration d'un moteur de template quasi en natif pour le framework. Après codeIgniter il y a eu Kohana framework, qui est un fork de codeigniter mais depuis la version 3 (et encore la version 2), le framework kohana n'a plus rien à voir avec son parent CI. Fuelphp merge de l'idée de développeur de la communauté de CI, car ils trouvaient ce dernier un peu trop limité à leur besoin. Ils ont donc décidé de développer leur propre framework sans pour autant concurrencer CodeIgniter, mais pour des projets de plus grandes envergures.

Fuelphp le meilleur framework tous confondus ?

Voilà ce que l'on peut lire de ci et là sur la toile sur ce framework "fuelphp est un framework qui réunit le meilleur de tous les frameworks", Autant le dire, ces développeurs / webmaster en herbes disent de grosses Conneries ! Il ne faut pas trop s'avancer et savoir de quoi on parle avant d'avancer quoi que ce soit, que cela soit au niveau framework ou CMS. Bien des développeurs avant de parler feraient mieux de tester d'autres framework afin de pouvoir comparer, car on s'aperçoit très rapidement en parlant avec certains (je ne dis pas tous heureusement), qu'ils ne connaissent pas les opposants.

Alors comment vouloir faire une comparaison si l'on n'a rien à comparer ?

Avant que l'on ne voit émerger certaines pratiques ou bien philosophies conceptuelles d'applications, j'en parlais déjà et on ne m'écoutait que d'une oreil, il semblerait donc que ma veille technologique soit suffisamment efficace lorsque je vois l'avance que j'ai sur certain.

J'ai développé sous ZendFramework ainsi que bien des cms et autres framework, aujourd'hui je programme sous Syfmony2 (symfony 1 est le premier framework php que j'ai eu l'occasion de voir tourner dans ma première boite).

Fuelphp est puissant oui ! et fait parti des grands (pour des projets de grandes envergures), mais lorsque je lis - "fuelphp rassemble des conceptes de ruby on rails" => Plusieurs framework n'ont pas attendu fuelphp pour le faire - "fuelphp possède un générateur de CRUD en ligne de commande" => Symfony le faisait déjà ;) Cela a tendance à m'irriter le poil.

Il ne faut pas s'emballer tout de suite mais regardons pourquoi ce framework est puissant et qu'il fait partie de mes frameworks de prédilections

L'axe de voûte d'un Framework php Aujourd'hui

Très franchement après Codeigniter, ZendFramework et symfony2 j'ai testé les autres framework tel que Yii, Cakephp, Kohana ... On lit souvent que tel framework permet de développer une application rapidement, est sécurisé, fait pour les gros projets etc....

Mais quel framework très franchement fait cela ? A l'heure actuelle (pour ceux que j'ai testé et audité) je ne vois que Symfony2, Fuelphp et Yii framework (Kohana n'en fait pas partie je vous dirais pourquoi).

J'ai lu aussi sur la communauté Zend un com d'un dev (a deux balles encore) Ce que symfony fait Zend peut le faire Hummmm, au passage je tiens juste à dire dans ce cas que ce que Zendframework fait CI peut le faire ainsi que n'importe quel framework ! Mais ce qu'il est important de savoir c'est EN COMBIEN DE TEMPS DE DEVELOPPEMENT IL LE FERA ?

Un bon et puissant framework afin d'être utiliser professionnellement se doit d'avoir :

  • - un Générateur de CRUD
  • - Une architecture HMVC !!! et non pas que MVC ! on s'en fiche que cela soit un framework qui ne soit mvc car un framework qui ne l'est pas est bon pour la poubelle tout simplement.
  • - Une implémentation (native de préférence) d'un moteur de template php ou autre où si il n'en existe pas, que l'on puisse l'implémenter facilement et rapidement dans le framework (pas comme Zend framework)
  • - Un gestionnaire ACL
  • - Un système multilangue
  • - Une segmentation intelligente pour les modes opérateurs tel que Dev, Test, Prod
  • - Architecture de module réutilisable (idéal le hmvc pour cela mais hmvc ne veut pas dire forcément modularité en respectant les 3 couches mvc, car j'ai pu constater certain framework qui implémentaient mal ce pattern
  • - Un ORM (mais pas nécessairement, un class abstractive de BDD peut amplement suffir si l'on ne développe pas comme un porc)
  • - Un Système de Cache intelligent
  • - Une bonne implémentation de l'Ajax (c'est pas grand chose mais c'est un sacré plus lorsque l'on voit dan symfony2 par contre fuelphp ne possède pas une implémentation ajax suffisante à mon goût, j'ai du faire des extends de class pour cela, mais ça va venir)

Si le framework remplit TOUT ces points requis, alors je ne peut vous conseiller que d'utiliser cet outils. Symfony2 ainsi que Fuelphp comporte tous ces points à l'inverse de tous les autres framework php (Sauf Yii et Cakephp2 qui ont bien évolué et possède eux aussi une architecture HMVC, CRUD ...).

Voilà pourquoi fuelphp est un framework puissant, mais lorsqu'on lit les arguments de certains sites ou blog sur la puissance de fuelphp, à les lire on ne voit aucunes différences avec d'autres framework ! Donc ne lisez pas n'importe quoi même lorsque c'est un développeur qui a 10 ans d'expérience et j'en passe. Le nombre d'années d'expériences en informatique n'est pas synonyme de compétences (comme dans d'autres métiers hélas). J'ai pu rencontre nombre de développeur qui avaient X années d'expériences qui s'étaient reposés sur leurs lauriers et passaient plus leurs temps à se congratuler de leurs soit disant programme pendant que d'autres pondaient réellement des programmes de qualités.

La reutilisabilitée de composant est très important dans la programmation et ne s'arrête pas qu'à de vulgaire class php. Il faut une réutilisabilité notamment de module (ou plugin dans le jargon CMS) que l'on puisse rapidement implémenter avec une couche javascript, Database et Graphique notamment (template html). C'est justement ce que permet l'implémentation HMVC dans un framework.

Si je devais comparer Symfony2 avec Fuelphp, je dirais que Symfony2 est un peu plus puissant que fuelphp et qu'il manque encore quelques libertés de processus à l'inverse de Symfony2 dont on apprend chaque jour toutes ses possibilités.

Fuelphp est encore jeune mais très sérieusement si en France on devait voir les frameworks les plus demandés professionnellement je dirais sans hésiter SYMFONY2 et FUELPHP (il n'est pas non plus obligé qu'il y en est que deux mais il ne vaut mieux pas non plus s'éparpiller car après cela deviendrait difficile de trouver des développeurs pour tel techno & autre, mais bon en même temps on nous en demande tellement beaucoup que l'on est plus à ça prêt non ? :) ).

Zendframework même Zend 2 que j'ai pu tester, a encore beaucoup de progrès à faire côté framework, bien que j'utilise de façon abondante l'outil zend_tool en architecture modulaire, Zend demande trop de modification afin d'avoir un outil (un FRAMEWORK) puissant et réellement utilisable dans le milieu professionnel. Zend bénéficie d'une librairie très complète, propre et puissante (normal c'est php qui fait). Le gros avantage de Zend est qu'il laisse le choix de vouloir ou non l'utiliser comme un framework ou bien d'utiliser sa librairie. Le gros désavantage de Zend en mon sens c'est qu'il demande bien trop de code (compliqué et long) afin de créer une application correcte et modulable. Si on connait déjà très bien Zend vous me dirais "n'importe quoi zend c'est simple", mais encore une fois, si l'on connait bien zend. Le temps c'est ce qu'il manque aux développeurs hélas car on a souvent la pression, certain Symfony2 demande lui aussi du temps d'apprentissage mais au finale cela en vaut la peine.

Les autres frameworks professionnels Cakephp, Kohana, Yii....

J'ai testé Cakephp en regardant la doc, des tuto sur Grafikart par exemple afin d'aller plus vite dans la compréhension du framework, mais très franchement lorsque que vous êtes passé par Codeigniter, ZendFramework et surtout Symfony, vous vous adaptez très rapidement à un framework.

Mon avis sur Cakephp ? J'ai deux boites qui travaillent avec chez qui j'ai failli bosser et très franchement je suis très content de ne pas avoir dit oui, tout simplement car : CakePHP ne devrait pas être utiliser professionnellement pour de grosses application avec un bute de réutilisabilité !

Bien entendu, comme le choix d'un CMS, le choix d'un framework pour une entreprise doit se faire selon le contexte et le cycle de vie de l'application

Cakephp ne comporte quasiment aucun point que j'ai spécifié dans le choix d'un framework. pas de moteur de template facile à implémenter, pas d'architecture modulaire HMVC surtout ! Bien sûr on possède tout à fait la liberté de structurer ses contrôleurs, coponents et autres en sous dossiers. Il possède plus ou moins une génération de CRUD et la possibilité d'utiliser la console pour générer des procédures. En gros CakePHP et Kohana son similaire à la différence que cakephp est plus aboutis que kohana du fait de sa maturité. En terme d'accessibilité cakephp n'est pas très compliqué et contient beaucoup de doc. Dans le milieu professionnel cakephp peut être utiliser (vous allez me dire que je me contredis mais non), mais je précise bien, si l'on doit créer une application web il vaut mieux éviter et se diriger vers un Syfmony ou bien FuePHP. En gros CakePHP reste un framework Classique on va dire, pas très différent des Yii framework & co.

Kohana ?

Kohana est un framework HMVC qui est né avant FuelPHP. Il comporte une architecture MVC et HMVC modulaire, une ORM (maison), système de cache, générateur de CRUD (mais pas encore aboutis).... Pourquoi ce framework ne fait pas partie des outils que j'utilise professionnellement alors ? Car Kohana comporte une Documentation bien trop légère ! Pas assez de sources, pas d'implémentation native ou rapide de moteur de template sans mettre les mains dans le core du code.

Bien sûr avec Symfony ça fait plutôt mal, mais le jeu en vaut la chandelle et possède une doc, un cycle de vie dix fois plus professionnel que bien d'autres framework (c'est pas pour rien que Drupal 8 implémentera symfony dans son CMS ;) ).

Yii Framework ?

On le dit Puissant, aussi puissant que Symfony même ? PAS DU TOUT Rien à voir ! Yii framework est puissant mais ne comporte pas tous les points relevé justement, si l'on ajoute à cela une courbe d'apprentissage un poil moins ardu mais tout de même, que symfony, autant se diriger vers symfony framework dans ces cas là. Bien entendu si l'on devait par contre comparer Yii avec Zend je choisirais sans hésiter Yii framework (générateur de CRUD). Par contre Yii ne possède pas de modularité en HMVC natif, l'implémentation template à priori existe mais perso je n'ai pas trouvé rapidement la documentation nécessaire à cela. Yii framework par contre conviendrait tout à fait à une utilisation professionnelle, mais comme dit plus haut, si l'on calcule la courbe d'apprentissage, autant se diriger vers un framework complet.

Et Codeigniter dans tout ça ?

On dit que CodeIgniter est bien pour les petits projets, OUI et NON. Car CI est un framework facile d'utilisation, ce qui fait que la courbe d'apprentissage du framework est d'ailleurs là plus rapide en comparaison de ses homologues. En une semaine j'arrivais à comprendre le coeur du framework et développer une architecture modulaire, template, crud et tout ce qu'il faut pour la conception d'un gros projet. Donc oui CodeIgniter, peut être un framework utilisable dans le milieu professionnelle croyez moi et même sur des gros projets, mais il vaut mieux avoir une bonne culture web et un bon bagage en POO afin de bien structurer son application

Pour certain besoin et projet je vais plus utiliser des CMS comme Contao, Drupal, Spip (top), Prestashop, wordpress, cmsms ou joomla. Joomla est plutôt puissant comme CMS mais je trouve le code et l'architecture très mal pensée, bancale (n'as pas su se moderniser et on a l'impression que ce sont des programmeurs amateurs qui on programmé).

Enfin voilà le mot de la fin après un long monologue dont j'espère qu'il ne vous aura été instructif, bien entendu je ne suis pas rentré dans les détails de FuelPHP car l'article n'avait pas un bute non plus de didacticiel, mais plus un bute de livre blanc si je puis dire, afin que vous sachiez réellement quels sont les points à regarder afin de (et avant) dire "Ce framework est puissant et vous aidera à développer plus vite"

Mot de la fin

Il ne faut pas oublier dans tout cela que le choix d'un framework au delà de l'aspect technique doit aussi convenir au développeur qui va ou vont l'utiliser. C'est sûr que l'on a pas forcément tous le choix, mais lorsque l'on doit faire un choix technologique tel, il faut se poser les questions principales que j'ai soulevé sans oublié un facteur très important "LA COURBE D'APPRENTISSAGE". Sortie du côté technique, le choix d'un framework à puissance équivalente (cakephp ou yii par exemple), cela devient une question de goûts et de couleur je pense.

Article similaire : Symfony2 est-il le bon choix de framework