lexplorateur De A à XYZ

FRAMEWORK OR !FRAMEWORK

Voilà, force m’a été donné de constater que bon nombre de développeurs web continue de réaliser des sites internet sans utiliser un quelconque framework. Fait que je trouve inadmissible devant la prolifération de framework et les bienfaits que leurs utilisations confèrent au développement d’un site ou d’un application web.

Aujourd’hui je voulais vous parler des frameworks PHP et de la raison qu’il y a derrière le choix de l’utilisation d’un framework ou non. Le but ici ne sera pas de faire de l’évangélisation pure et simple (en fait si), mais plutôt de donner mon point de vue et d’éclaircir les développeurs qui se poseraient encore des questions sur l’utilisation d’un framework.

Arrête de me … avec tes éloges sur symfony! Je préfère coder avec du PHP Brut.

C’est généralement le genre de phrases que me sorte bon nombre de développeurs lorsque je me mets à faire l’évangélisation de Symfony (eh oui je ne jure que par symfony). Ce type de phrase me fait toujours marrer sachant que ces personnes utilisent déjà un framework sans s’en rendre compte.

 

Wtf !? Tu déconnes mec ?

Même si vous codez en procédural ou en POO vous ne le savez pas mais vous utiliser déjà un framework. En effet au fur et à mesure de vos projets vous allez rencontrer des fonctions de plus en plus similaires et, à moins d’être masochiste, vous vous créerez vos propres fonctions à réutiliser. Ainsi, vous vous construisez une « librairie » d’outils et ainsi, sans vous en rendre compte, vous créez votre propre framework.

Je trouve mon code plus optimisé, pourquoi utiliser le code d’un autre et risquer de m’y perdre?

Donc là vous vous dites sûrement « ben mon code que j’ai créé me va, pourquoi utiliser un framework ». Lorsque vous utilisez vos librairies vous êtes beaucoup plus productif. Et de manière générale vous gagnez de plus en plus de temps à chaque projet. Maintenant imaginez des centaines de développeurs qui mettent en commun toutes leurs librairies et vous obtenez le principal intérêt d’un framework Open Source. Avoir un code testé et gérant un maximum de cas qui vous permettra de coder tous vos sites beaucoup plus rapidement (une fois le framework bien assimilé).

Les frameworks ouverts utilisent tous la même structure, la structure MVC (Model View Controller) qui est une structure éprouvée qui vous permet de séparer la partie présentation de la partie logique. Effectivement, cette méthode peut paraitre trop complexe au premier abord mais elle vous permet d’avoir un code plus propre et beaucoup plus simple à debuguer par la suite.

Enfin le dernier atout d’un framework c’est le travail en équipe. En effet, si vous travaillez à plusieurs sur un même framework c’est l’assurance que tout le monde code en suivant les mêmes conventions. Si votre projet utilise symfony 2 par exemple, vous savez qu’un dev Symfony 2 sera capable de travailler sur le code et comprendre le votre dès le premier jour. En revanche si vous utilisez votre propre framework le temps d’adaptation peut être plus long, et on prend le risque que chaque nouveau développeur rende la structure de moins en moins stable.

Par ailleurs lorsque l’un des membres de la dite équipe est amené à la quitter le nouvel arrivant pourra intégrer plus facilement cette équipe. Oui je vous entends d’ici me dire « A condition qu’il connaisse le framework utilisé ». Oui la courbe d’apprentissage peut être un problème (mineur) mais vous avouerez qu’il est plus facile d’apprendre un framework dont la documentation est existante plutôt que d’essayer de comprendre la logique d’un autre développeur

framework != Performances

L’aspect le plus décrié des framework reste les performances. Même si la plupart des frameworks n’incluent pas « trop » de librairies en se basant sur le principe du lazy loading, ils s’avèrent forcément plus gourmands qu’un code PHP Brut. Les performances peuvent être améliorée au fur et à mesure de la compréhension du fonctionnement du framework. Par exemple, sur SYMFONY2 l’utilisation d’un ORM comme doctrine optimise de façon significative les requêtes effectuées et le système de cache est extrêmement puissant.

Il y a une grosse partie optimisation à faire avant d’incriminer les frameworks à proprement parler (mise en place d’un système de Cache, Load Balancing…). On trouve des exemples de site à très très haut traffic qui utilisent des frameworks réputés « lents » et qui s’en sortent très bien. La preuve avec cette Conférence du développeur de YouPorn (SFW) qui explique comment le site arrive à survivre à 300 000 requêtes/s et plus de 100 Millions de pages vues avec Symfony 2.

D’une manière plus générale si vous arrivez à des proportions où le code PHP devient limitant c’est que vous pouvez commencer à investir dans une structure serveur plus robuste.

Ok mais devant la prolifération de framework, lequel choisir ?

Il n’y a pas de framework « ULTIME ». En effet, chaque framework propose sa vision des choses et sa façon de coder. Par exemple :

  • CakePHP se base sur la syntaxe/logique de RubyOnRail avec des conventions strictes pour écrire moins de code.
  • Symfony 2 utilise le « tout module » avec un code réutilisable au maximum.
  • Laravel propose un système de Facades pour proposer un code reposant sur des classes statiques (servant de façade à des singleton ou des objets).

Je pense que le choix du framework est avant tout une question de goût, à vous de voir la façon de fonctionner de chaque framework et celle qui vous semble la plus naturelle. Cependant certains autres élément sont à prendre en compte dans certains cas :

  • La communauté, un framework avec une grosse communauté c’est l’assurance de trouver des réponses en cas de problème. Si vous utilisez un framework utilisé par 10 développeurs vous risquez de galérer en cas de problème.
  • La version de PHP supportée, attention à prendre un framework qui va fonctionner sur votre configuration serveur. Si vous n’avez pas d’impératif côté serveur un framework ne supportant que PHP 5.3+ (ou 5.4+) est une bonne chose car cela veut dire qu’il utilise les dernières fonctionnalités de PHP
  • La fréquence des mises à jours. Alors là il y a un juste milieu à trouver. Il faut un framework qui soit mis à jour mais pas trop :D. Si les changements de versions majeures sont trop rapides il vous sera difficile de trouver des ressources sur la version que vous utilisez. Un framework rarement mis à jour peut contenir des bugs et des problèmes qui ne sont pas résolus rapidement.
  • L’état du marché, si votre optique est de trouver du travail avec les compétences que vous êtes en train de développer, choisir un framework demandé par le marché est une bonne stratégie (comparer sur des sites comme RemixJobs). Par exemple en France, Symfony 2 et Laravel sont pas mal répandus.

Personnellement, je suis un développeur web et comme dit plus haut, je ne jure que par Symfony2 (que je me plais à appeler le Saint Graal des développeurs web)

Alors si vous avez lu tous mes arguments vous vous demandez peut être pourquoi j’utilise Symfony2 comme framework. Dans mon cas Symfony2 est le premier framework PHP sur lequel j’ai travaillé (eh oui j’ai eu a l’utiliser durant l’une de mes expériences professionnelles en entreprises) et j’ai quasi-instantanément été séduit par ce framework, je n’ai jusqu’a présent pas ressenti le besoin de passer sur un autre framework.

Malgré tout, j’ai testé un peu d’autres frameworks pour me faire une idée de ce qui se faisait ailleurs mais je n’ai jamais été totalement satisfait par les options proposées (dur d’oublier son premier amour, on compare toujours :)).

  • Laravel devient de plus en plus populaire en ce moment donc dur de passer à côté. La syntaxe et la structure du code m’a vraiment plue et il m’arrive de l’utiliser sur des projets de petite /moyenne envergure.

Conclusion

Selon moi l’utilisation d’un framework pour la création de projet Web est indispensable et je ne m’imagine pas pouvoir créer une application sans en utiliser un. Après il est tout à fait envisageable de se créer un framework perso en incluant seulement les fonctionnalités que l’on souhaite mais il faut alors réfléchir à l’intérêt d’une telle démarche et voir si c’est rentable sur le long terme surtout si d’autres développeurs doivent intervenir sur le projet.

.

Commentaires

Malick Koné

Fan d'internet et de technologies ...

Suivez-nous

Ne soyez pas timide, entrez en contact. Nous aimons rencontrer des gens intéressants et nous faire de nouveaux amis.