Fermer
DéveloppementOutils - Conseils

Pourquoi devriez-vous utiliser un framework PHP ?

Je viens de découvrir à la suite d’un tweet de @LaFermeDuWeb un article anglais très intéressant intitulé : “Why You Should Be Using a PHP Framework”. Après avoir contacté l’auteur, je me permets de vous en faire une retranscription en français.

Tous les frameworks abordés dans cet article sont des frameworks Web codés en PHP tels que : Code Igniter, Symfony, Kohana, Yii et CakePHP. Certains (mais pas tous) des points ci-dessous peuvent s’appliquer à des minis frameworks tels que FatFreeFramework, Limonade, Glue et Slim.

Pourquoi devriez-vous utiliser un framework PHP ? - Totalité des frameworks

Quand dois-je utiliser un framework ?

Les frameworks doivent être utilisés pour construire des applications Web. Toute demande qui comporte l’appel à une base de données, des formulaires, sessions, cookies ou l’appel à un service à distance (comme Twitter ou Facebook) gagnera en performance en partant d’un framework existant et utilisé par de nombreux autres systèmes. En revanche, il n’est pas nécessaire d’utiliser un framework pour un site qui a seulement une ou deux pages, ni pour des scripts en ligne de commande.

Quelles sont les caractéristiques que peut me fournir un framework ?

  • Couche d’abstraction de la base de données : Un framework peut générer une couche d’abstraction ou interface entre le code de votre application et les appels natifs réalisés vers le serveur de base de données, permettant de prendre en compte les caractéristiques des fournisseurs SQL. Ainsi vous pouvez modifier votre base de données SQL sans avoir à réécrire du code. Par exemple, passer de MySQL à PostgreSQL ou MSSQL. Certains frameworks peuvent également gérer les relations de base de données automatiquement, ce qui vous évite d’avoir à écrire les requêtes de jointure.
  • Pourquoi devriez-vous utiliser un framework PHP ? - Abstraction BDD
  • Couche d’abstraction du cache : Plutôt que d’utiliser des fonctions de mise en cache spécifiques (tels que apc_add et apc_fetch), vous allez utiliser une classe de mise en cache générique qui a un support pour de multiples serveurs tels que Memcache, APC et XCache.
  • Gestion des formulaires : Symfony2 et CakePHP permettent au développeur de définir les propres formulaires en PHP. Le framework prend alors en charge automatiquement toute la production de la widget HTML, la validation du formulaire et de la sécurité CSRF (Cross-Site Request Forgery).
  • Authentification : La plupart des frameworks sont livrés avec un module d’authentification utilisateur générique. Ils gèrent la connexion et déconnexion, l’enregistrement, la gestion des sessions et des autorisations. Il est généralement très facile de modifier et ajouter vos propres champs personnalisés.
  • Débogage et Data profiling : Kohana3 et Symfony2 sont livrés avec une barre d’outils de débogage. Ils vous permettent d’inspecter les variables globales, les requêtes de base de données, les logs et les temps de chargement pour la requête en cours.
  • Internationalisation : Les frameworks vous permettent de créer facilement des versions spécifiques suivant les langues que vous souhaitez gérer, grâce à l’internationalisation en natif dans ces outils.

Quels sont les avantages que je peux avoir en utilisant un framework ?

  • Portabilité : L’abstraction de la base de données et du cache permet à votre application d’être utilisée sur de nombreuses configurations de serveurs différents. Si votre application est Open Source, beaucoup plus de gens seront en mesure de l’installer.
  • Temps de développement plus court : Puisque vous n’êtes pas obligé de réécrire le code sur la gestion des utilisateurs, et même de l’authentification, de l’accès à la base de données et aux formulaires, le temps de développement ce réduit considérablement.
  • Sécurité des applications : Les fonctions de sécurité comme l’authentification et les autorisations sont gérées pour vous par le framework. De plus, les insertions dans la base de données sont automatiquement nettoyées et la plupart des frameworks ont des protections contre les attaques de type Cross-Site Request Forgery.
  • Soutenue par la communauté : Les frameworks ont des forums, des listes de diffusion et des canaux IRC pour les soutenir. Si vous rencontrez un problème avec un framework, les chances que quelqu’un d’autre ait eu le même problème et ait apporté un correctif sont très grandes, notamment sur les frameworks largement déployés.
  • Plugins et modules : Un bon nombre de membres de la communauté développent des plugins et des modules que vous pouvez télécharger et utiliser dans votre application.
  • Règles de codage stricts : La plupart des frameworks vous forcent à suivre des principes de codage, notamment le modèle MVC : Modèle, Vue, Contrôleur. Cela vous donne une manière de penser sur la façon dont votre code doit être structuré avant de l’écrire, ce qui le rend de meilleur qualité.
  • Pourquoi devriez-vous utiliser un framework PHP ? - MVC
  • Investissement pour le futur : Les frameworks sont (généralement) bien documentés et testés. Ainsi, si un autre développeur vient vous aidez sur le projet, ou que vous avez vendu votre projet, ce dernier aura seulement besoin de lire la documentation sur du framework, pour comprendre le code. Si vous utilisez un framework qui est très peu utilisé, voire pire votre propre framework, le temps qui devra être mis dans la formation du nouveau développeur vous coûtera pas mal d’argent !

Conclusion

Chacun aura sa propre opinion sur le choix du meilleur framework ! En revanche, je vous recommande de jeter un œil à tous les frameworks cités ci-dessous, dont chacun a son propre style de conception de l’application.

  • Si vous avez une expérience dans le développement de Ruby On Rails, il faudra peut-être vous pencher sur CakePHP et PHP on Trax
  • QPHP est une structure MVC semblable à une architecture en ASP.NET
  • Symfony 2 permet aux gens qui connaissent Java de ne pas être dépaysés. En effet, certaines couches de Symfony 2 sont inspirées de très bons frameworks tels que Spring (Java) ou Django (Python) et que certains concepts que nous n’avions pas encore dans l’univers PHP font leur apparition. Je pense notamment à Twig, le moteur de templates livré avec le framework, qui est très prometteur
  • Pour finir, je vous conseille de vérifier d’autres projets tels que : Zend Framework, Kohana, CodeIgniter, Yii, Lithium , Fuel, Alloy et Akelos avant de prendre votre décision

Vous devez utiliser les frameworks pour diverses raisons, mais la raison numéro un est d’accélérer le processus de développement. La réutilisation de code dans des projets similaires vous permettra de gagner considérablement un maximum de temps et d’efforts.

La stabilité est également une autre grande raison d’utiliser des frameworks. Bien que la simplicité est l’un des plus grands atouts de PHP, elle peut aussi être un problème. En effet, il est assez facile, surtout pour les débutants, d’écrire du mauvais code sans même s’en rendre compte, comportant d’importants problèmes de sécurité dans votre code qui peuvent être sensibles aux attaques.

Personnellement, au boulot, j’utilise un framework développé par l’entreprise. Initialement bâti sur une application existante (dotProject), Mediboard a hérité d’un embryon de framework qui n’a eu de cesse de s’améliorer au cours des années de développement. Lors de la création de Mediboard très peu de frameworks libres et généralistes étaient disponibles, c’est pourquoi la société s’est orientée vers une solution interne. Le système est devenu progressivement puissant et généraliste et couvre l’essentiel des fonctionnalités des frameworks classiques (Authentification, MVC, Abstraction de SGBDR, Générateur de formulaires, …).

En revanche vous devez vous poser certaines questions avant de commencer : Le framework vous fera-t-il gagner du temps ? Offrira-t-il de meilleures performances à votre application ? En améliorera-t-il la stabilité ? Si vous pouvez répondre “oui” à l’une de ces questions, un framework PHP est peut-être approprié pour votre projet !

Que pensez-vous des frameworks ? N’hésitez pas à venir en parler dans la partie commentaire de cet article ! Nous partagerons ainsi nos points de vue.

Mots-clé : avantagescaractéristiquesframeworkPHP
Yohann Poiron

L’auteur Yohann Poiron

J’ai fondé le BlogNT en 2010. Autodidacte en matière de développement de sites en PHP, j’ai toujours poussé ma curiosité sur les sujets et les actualités du Web. Je suis actuellement engagé en tant qu’architecte interopérabilité.