Symfony : Le framework PHP incontournable en 2024

C’est quoi un framework ?

Le 15/11/2024

Contexte

Dans le développement web moderne, répondre aux besoins des clients tout en respectant leurs contraintes de temps et de sécurité est devenu crucial. Les projets doivent être livrés rapidement, tout en étant fonctionnels, et sécurisés contre les nouvelles menaces. C’est dans ce contexte que les frameworks se révèlent indispensables.

Qu'est-ce qu'un framework ?

En développement web, un framework est un ensemble cohérent de bibliothèques et de règles conçu pour structurer et faciliter la création d’applications web. Grâce à un framework, les développeurs peuvent se concentrer sur les fonctionnalités spécifiques de leurs projets sans avoir à réinventer la roue. On peut voir un framework est comme une boite à outils qui facilite le travail des développeurs tout en garantissant une qualité et une cohérence de code.

Comment fonctionne un framework ?
Cadre et Structure de code

Nous venons de voir qu'un framework impose une structure de code. Prenons un exemple concret : Symfony. Ce framework impose une façon d’organiser son code source en suivant le modèle MVC.

Le MCV est un design partern qui signifie Modèle-Vue-Controller. En suivant ce modèle, le code source se divise en trois parties :

  • Modèle Le modèle gère tout ce qui est relative aux données, comme leur stockage, modification, récupération ou suppression.
  • Vue La vue permet d’afficher l’interface utilisateur. Elle contient essentiellement du code HTML, mais peut inclure du XML, ou du texte brut).
  • Contrôleur Le contrôleur va faire le lien entre la vue et le modèle. Lorsque l’utilisateur effectue une action ou une requête, c’est le contrôleur qui est appelé en premier.

En plus de cette architecture, Symfony contient également plusieurs composants, dont certains d’entre eux sont expliqués dans cet article.

Comment fonctionne un framework ?
Librairie vs Framework : Principe d'inversion

Il est important de souligner la différence entre une librairie (ou bibliothèque) et un framework.

Une librairie fournit un ensemble de code préconçu, comme des fonctions prêtes à l’emploi. Le développeur peut les appeler sans avoir à réécrire les mêmes fonctionnalités encore et encore pour ses différents projets. Il a un contrôle presque total sur cette bibliothèque, dans le sens où il peut l’utiliser où il le veut et quand il veut.

Exemples de librairies : Faker, une librairie PHP utilisée pour générer des données factices.

Un framework, au contraire, fournit une structure et une architecture prédéfinies. Il suit le principe d’inversion de contrôle. C’est le framework qui appelle le code du développeur et non l’inverse. En tant que développeur, nous nous occupons uniquement de la gestion des données que nous y injectons, leurs traitements et leurs affichages. Tout le reste, est pris en charge par le framework.

Pourquoi utiliser un
framework ?

Les avantages d’utiliser un framework sont nombreux :

  • Gain de temps : Les frameworks sont fournis avec des fonctionnalités prêtes à l’emploi, nous permettant ainsi de nous concentrer que sur les fonctionnalités spécifiques du projet. Utiliser un framework nous évite de devoir redévelopper des fonctionnalités récurrentes comme les systèmes de sécurité ou encore la gestion des utilisateurs.
  • Code organisé et structuré : Les frameworks imposent une structure de code claire pour le code et l’arborescence des fichiers, optimisant ainsi la lisibilité et la maintenabilité. Elle permet aussi de faciliter le travail en équipe, permettant à chaque membre de comprendre le code rapidement, et de travailler sur des fonctionnalités bien précises.
  • Réduction des bugs et sécurité renforcée : Les frameworks sont basés sur des standards élevés en matière de sécurité et sont constamment mis à jour pour corriger les vulnérabilités et les adapter aux nouvelles menaces.

    Dans le cas de Symfony : il suit les normes PHP Standards Recommendations-1, PSR-2, PSR-4 et PSR-12. Il intègre également des protections contre les vulnérabilités répertoriées dans le OWASP Top 10, telles que l’injection SQL (via ORM Doctrine avec requêtes préparées), les attaques XSS (échappement automatique des sorties dans Twig), etc.
  • Grande communauté et documentation : Les frameworks populaires disposent souvent d’une grande communauté, assez conséquente pour pouvoir avoir du contenu de type formation et tuto sur l’utilisation du framework en lui-même. Ces ressources facilitent l’apprentissage, le débogage et permettent de demander de l’aide directement à la communauté lorsqu’on rencontre des blocages.

Les différents types de framework

Il existe plusieurs types de frameworks, chacun destiné à des aspects spécifiques du développement :

  • Frameworks Front-End : Ces frameworks sont utilisés côté client principalement pour le développement d’interface visuelle. Ils facilitent la création de composants réutilisables. Exemples populaires : React et Angular.
  • Frameworks Back-End : Ces frameworks sont utilisés côté serveur pour le développement de la logique applicative, de la gestion des bases de données, les API et la sécurité. Exemples populaires : Symfony et Laravel.
  • Frameworks CSS : Ces frameworks offrent des outils et des styles préconçus permettant de créer des designs cohérents très rapidement. Ils incluent des grilles, des typographies, ou des classes prêtes à l’emploi. Exemples populaires : Bootstrap et Tailwind.

Les inconvénients

Voyons maintenant les inconvénients d’un framework :

  • Courbe d’apprentissage : L’apprentissage d’un framework peut prendre beaucoup de temps, surtout pour ceux qui commencent dans le développement web. Les frameworks imposent souvent une structure de code stricte, nécessitant des connaissances approfondies du langage associé. Par exemple, des frameworks comme Symfony ou Laravel demandent d’avoir une bonne compréhension de concepts comme la programmation orientée objet, les namespaces, le système MVC et le langage PHP dans son ensemble.
  • Risques de dépendance : Utiliser un framework rend le projet dépendant de celui-ci. Si le framework est abandonné par ses développeurs ou sa communauté et devient obsolète, il peut être difficile de migrer vers une autre solution.

Conclusion

Malgré leurs défauts, les frameworks restent des alliés précieux pour livrer des projets sécurisés et fiables rapidement. On pourrait maintenant se poser la question de comment choisir le bon framework ?

Comme nous l'avons vu dans la partie « différents types de frameworks », il en existe plusieurs, chacun conçu pour des usages spécifiques. Le choix dépendra principalement du type de projet à réaliser, des besoins particuliers (interface utilisateur, gestion serveur, sécurité, etc.) et du langage de programmation préféré.

Article suivant

Pourquoi utiliser symfony dans vos projets