Fuelphp un framework HMVC de la même veine que Symfony2 framework
Fuelphp un framework, php donc ! en HMVC qui est plutôt récent mais est très puissant et rentre donc dans la catégorie des frameworks pour les gros projets. Voici un billet spécial afin d'éclairer un peu certain dire sur le web
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
Commentaires
J'ai eu du plaisir en lisant votre article, merci beaucoup.
En tant que développeur Yii (chef de projet), d'aprés mon experience jusqu'a présent je considère que Yii est plus puissant comparant a Symfony, j'ai pas testé encore FuelPhp, j'été aussi développeur cakephp qui été mon premier framework que je le considère un framework pour les freelancer, Yii posséde du HMVC aussi malgré que c'est pas cité dans la doc.
http://www.yiiframework.com/doc/api...
@Cherif:
Oui effectivement Yii Framework peut être adapté à une architecture HMVC j'ai omis de le préciser, effectivement yii framework semble être un framework puissant, je développe pas mal en cakephp ces derniers temps car si des développeurs d'entreprises n'ont aucunes notion de framework le temps d'apprentissage serait plus rapide que sous symfony2 ou bien Yii framework et qu'il est relativement puissant pour subvenir à beaucoup de problématique.
Bien entendu après cela dépendra du choix de l'entreprise étant donné que je bosse plus professionnellement avec Syfmony2 et donc que je pourrais plus rapidement former les développeurs à cet outils.
Hélas Yii n'étant pas assez intégré dans le domaine des entreprises française, cela peut être un choix difficile à faire pour certaine, on ne voit partout que du Zendframework ou bien Syfmony2, Zend est vraiment bien point de vue librairie mais je pense que les entreprises devraient sans doute plus s'orienter vers des solutions plus proche à l'attente des frameworks tel que Symfony2, Yii ou Cakephp et encore mieux serait sans doute FuelPHP qui je pense promet vue qu'il possède réellement un atout non négligeable qui est le temps d'apprentissage le plus rapide en comparaison des autres frameworks.
Je gère une équipe de dev dans une société en Algérie, on a réécris toute une application de gestion de projet qui été en Symfony-1.2 avec Yii, la précédente avait beaucoup de problèmes de performance (même les dev ont mal utilisé le framewrok) maintenant avec Yii même s'il est mal utilisé dans certains coins mais la performance y a pas de photo (sans cache), en plus j'ai trouvé du mal pour trouver des ressources qui maîtrise la POO et le temps d'apprentissage est long.
on développe qu'avec Yii et on est ravi de résultat qu'il donne pour le moment malgré qu'il est méconnus, a propos de HMVC dans la communauté Yii est déconseillé y a d'autres alternatifs comme les widgets comme provider d'action http://www.yiiframework.com/wiki/14...
J'ai vus un benchmark dans le site phalcon http://docs.phalconphp.com/en/0.7.0... , Yii toujours dans la tête (Phalcon écrit en C codeigniter microframework par rapport aux autres), CakePHP j'ai arrété de l'utiliser dans la version 1.3.x, problème de performance toujours, pour symfony j'ai pas fais encore un projet avec pour juger touts les aspect technique et fonctionnels.
FuelPHP, j'ai pas trouver dans la doc un truc qui parle de la gestion de droits d’accès !
A+
@Cherif:
Pour la gestion des droits de fuelphp : http://fuelphp.com/docs/packages/auth/types/acl.html
Effectivement sur la mouture des Symfony1 non seulement il était difficile et long sur la courbe d'apprentissage mais aussi en terme de perf il était beaucoup trop lourd je trouvais. Cela a été corrigé sur la version symfony2 qui est redoutable au niveau performance en comparaison de tous les autres framework, je n'ai pas assez de recul sur les perf pour le moment à propos de FuelPHP pour faire une comparaison objective ni trouvé de benchmark qui soit suffisamment objectifs aussi.
Effectivement Il vallait mieux passer par un autre framework que symfony1 car on ne dispose pas forcément du temps nécessaire pour concevoir une application stable et robuste. le HMVC est une architecture à employé mais dans sa bonne utilisation, car il faut adjoindre à cela un système de widget, de plugin ou autre, notamment sur cakePHP 2 cela est disponible et assez clairement reconnaissable vue que les dossiers sont déjà créé, ce qui permet d'éviter à concevoir tout cet aspect architectural qui n'existe pas dans Zend par exemple et qui demande des ressources et du temps.
Dans Symfony2 c'est ça qui est remarquable ils ont quasiment pensé à tout dans la philosophie du bundle et du php full objet, il vaut mieux avoir un bon background en poo tout de même afin de bien concevoir ses applis mais comme tout, il faut que expérience se fasse et on fait pas d'omelette sans casser des oeufs lol.
J'ai remarqué qu'il y avait des développeurs qui n'avait pas bien saisie le concept HMVC et qu'il était employé à toutes les sauces, si il est employé de façon abusive, on en revient à la case départ avec un trop grand nombre de sous répertoire et donc une application compliqué à maintenir.
En Algérie vous avez une plus forte tendance à utiliser le Framework Yii ?
J'espère avoir le temps dans le future de maîtriser plus le framework fuelphp et me calibrer sur symfony2 et fuelphp, car j'apprécie beaucoup la simplicité que l'on peut rencontrer dans le framework fuelphp vue qu'il est issu de développeur de CodeIgniter, on reste sur philosophie que je partage.