Ludovic Frank - Développeur indépendant

Qu'est-ce que le framework Symfony et pourquoi l'utiliser pour votre prochain projet web ?

ionicons-v5-k Ludovic Frank 21 mai 2023
512 lectures Niveau :

Bonjour 😁,

Si vous suivez un peu ce blog, vous savez que j'aime beaucoup le framework Symfony, c'est d'ailleurs mon choix de prédilection dans tous mes projets (même ce blog ...).

Quand vous faites du développement web, vous aurez surement remarqué qu'il y a beaucoup de répétition, imaginez que vous voulez créer une simple application web qui permet aux utilisateurs de créer des "to-do" et de les sauvegarder, oui, c'est un classique... 😛

Avant de créer votre application de « to-do », vous allez devoir (liste non exhaustive) :

  • Créer votre base de données et les requêtes SQL pour utiliser celle-ci.
  • Créer un système permettant à vos utilisateurs de créer leurs comptes.
  • Créer un système d'e-mail, pour vérifier que leurs adresses e-mail sont bonnes.
  • Créer une possibilité pour vos utilisateurs de se connecter à votre application web.

Ce ne sont que quelques étapes de la création de votre application web, et, vous en conviendrez, ces étapes n'apportent absolument aucune valeur ajoutée, en effet, ce genre de besoins sont des besoins ultras basiques dans tout site et application web, quasiment tous les sites web du monde ont ces besoins de base.

Une fois que votre superbe application sera lancée, alors il faudra ajouter de nouvelles fonctionnalités... par exemple, proposer aux utilisateurs des graphiques pour leur donner des statistiques sur « Combien de taches ont-ils postées et quand ils les ont postés », encore une fois, « créer un graphique » est une tache « basique » que beaucoup de projets doivent faire, alors, pourquoi perdre du temps précieux à faire cela ?

Si ce dont je vous parle ici, cela vous parle (cette phrase est bizarre), alors, cet article est fait pour vous, nous allons voir ce qu'est-ce que Symfony et surtout pourquoi il peut vous simplifier grandement la vie....

Vous êtes prêt ? Alors, c'est parti 😁.

Qu'est-ce que Symfony ?

Vous êtes toujours là ? Parfait 😁, maintenant que vous êtes prêt à plonger dans le monde de Symfony, commençons par les bases. Qu'est-ce que Symfony ?

Pour raccourcis on pourrait dire que Symfony est un framework PHP "open source", oui j'en conviens pour les "non initiés", cela ne veut rien dire... du coup, expliquons cela :

eh bien, si le développement web est une cuisine, Symfony est votre chef personnel de classe mondiale (Oui, carrément, quoi comment ça j'aime bien Symfo ?). C'est un « framework PHP », un ensemble d'outils structurés, réutilisables et maintenables, qui permet de créer des applications web "haut de gamme" et évolutives. Symfony n'est pas seulement un outil ; c'est une boîte à outils complète remplie de tout ce dont vous avez besoin pour faire de votre création d'application et de sites web un jeu d'enfant (bon, il va falloir apprendre 2 3 trucs avant ... 😁, genre, être développeur 😛).

L'histoire et l'évolution de Symfony

Chaque superhéros a une histoire, et Symfony ne fait pas exception. Fruit du travail de Fabien Potencier, Symfony est né en 2005 dans le cadre du projet SensioLabs, une agence web française. Le "premier cri" a été entendu en 2007 lorsque Symfony 1.0 a été présenté au monde. Depuis, comme un bon vin, Symfony n'a fait que s'améliorer avec l'âge.

Symfony2 est apparu en 2011, introduisant une toute nouvelle façon de développer des applications web en utilisant des composants réutilisables. C'est comme si l'on passait de la préparation de marshmallow grillé sur un feu de camp à un barbecue équipé. Soudain, tout est à portée de main, facile à utiliser et facile à mettre à jour (En fait Symfony 1 et Symfony 2 sont très différents, les versions récentes de Symfony ont encore des bases qui ont été posées à Symfony2, Symfony2 est l'époque ou votre serviteur s'y est m'y d'ailleurs).

Ensuite, Symfony 3 est arrivé en 2015, amenant l'efficacité à un autre niveau, un peu comme si vous échangiez votre voiture manuelle contre une automatique. Symfony 4 est arrivé en 2017, Symfony 5 en 2019, suivi de Symfony 6 en 2021.

Chaque version offrant des processus plus rationalisés, des interfaces conviviales et un plus grand nombre de possibilités d'application. C'est comme si quelqu'un avait pris un « bon framework » et avait continué à appuyer sur le bouton "mise à niveau" jusqu'à ce qu'il devienne "génial" 😍.

Les principaux composants de Symfony

Jetons maintenant un coup d'œil dans la boîte à outils de ce superhéros. Symfony est principalement composé de trois parties principales : les "Bundles", les "Components" et les "Bridges" :

  • "Bundles" : Les bundles sont des bouts de code prêts à être réutilisés pour différents projets. Ils sont similaires aux "plugins" dans d'autres écosystèmes. Vous avez besoin d'ajouter l'authentification de l'utilisateur ? Il existe un "bundle" pour ça. Vous voulez gérer facilement votre contenu ? Oui, il y a un un "bundle" pour ça aussi.
  • "Components" : Les « components » (ou composants en français) sont comme les Lego de Symfony. Ce sont des bibliothèques PHP autonomes et réutilisables que vous pouvez utiliser pour exécuter des fonctions spécifiques, comme la création de formulaires, la sécurité, le templating, etc. Ce sont des briques que vous pouvez assembler pour créer le château ou le vaisseau spatial de vos rêves... enfin, je veux dire, une superbe application web.
  • "Bridges" : Avez-vous déjà essayé de connecter deux systèmes qui refusent tout simplement de se parler, comme deux chèvres têtues sur un pont étroit ? (bizarre, cette référence…) C'est là que les "bridges" (pont en français) Symfony entrent en jeu. Ils connectent Symfony avec d'autres bibliothèques logicielles, réglant les problèmes d'incompatibilité. Pas besoin de traducteur, les « bridges » Symfony font tout le travail.

En résumé, Symfony est votre boîte à outils tout-en-un, une symphonie (étrange 🤔) de codes qui rationalisent et simplifient votre parcours de développement web. C'est le chef personnel dont vous ne saviez pas que vous aviez besoin, le superhéros que vous attendiez...

Comment fonctionne Symfony ?

La réponse à cette question est similaire à la façon dont un orchestre crée une symphonie. Vous avez toutes les parties - le violon, le violoncelle, la flûte, le tambour - chacune jouant son rôle spécifique, culminant dans une mélodie qui laisse le public sous le charme. Voyons donc comment Symfony, notre chef d'orchestre, aide toutes ces parties à jouer en harmonie.

La structure de Symfony

Si vous avez déjà essayé de construire quelque chose de complexe, comme une maquette de vaisseau spatial, vous savez qu'il faut suivre les instructions, une étape à la fois, avec patience. Dans Symfony, les "instructions" sont un ensemble de bonnes pratiques que vous pouvez voir ici.

Revenons aux trois éléments que nous avons vu précédemment, les "bundles", les "components" et les "bridges" :

  • Vous vous souvenez de notre ami le "Bundle" ? Chaque bundle dans Symfony est un bout de code autonome avec une tâche spécifique. Pensez-y comme un musicien dans notre orchestre, avec sa propre partition et son propre instrument. Les "bundles" interagissent de manière transparente avec d'autres "bundles", ce qui les rend incroyablement modulaires. Cela signifie que vous pouvez les ajouter, les supprimer ou les remplacer sans perturber la mélodie générale de votre application.
  • Les "components", nos Lego, offrent différentes fonctionnalités. Cela peut aller du traitement des messages HTTP à la gestion des fichiers, en passant par la traduction des langues, et bien d'autres choses encore. C'est comme si chaque Lego apportait une fonctionnalité unique à votre projet, et qu'il vous suffisait de les assembler dans le bon ordre pour que votre vision prenne vie. Vous pouvez d'ailleurs retrouver des composants (oui, cette fois je le mets en français) de Symfony dans d'autres projets.
  • Enfin, les "Bridges" servent de chefs d'orchestre, connectant différentes bibliothèques logicielles à Symfony, s'assurant que la performance se déroule sans accroc. Ils s'assurent que votre batteur et votre violoniste (différentes couches logiciels) sont sur la même longueur d'onde, même s'ils n'ont jamais joué ensemble auparavant.

Simplifier le processus de développement web

Imaginez-vous assis à votre bureau, face à une montagne de code à écrire, sachant que vous réinventez essentiellement la roue (vous vous souvenez de mon intro ?). C'est pas fou, n'est-ce pas ? Symfony transforme cette tâche banale et répétitive en un processus plus créatif et efficace 😍.

Avec Symfony, vous n'avez pas besoin d'écrire des systèmes d'authentification complexes à partir de zéro pour chaque nouveau projet. Au lieu de cela, vous utilisez simplement un bundle conçu spécifiquement à cette fin (avant c'était le FoSUserBundle, et maintenant c'est directement dans le MakerBundle). C'est comme acheter une étagère prête à monter au lieu d'abattre un arbre pour en construire une (après, si vous ne savez pas quoi faire de vos week-ends...).

Vous économisez beaucoup de temps et d'efforts, et vous êtes libre de vous concentrer sur les aspects uniques et passionnants de votre projet.

De plus, l'architecture MVC (Modèle-Vue-Contrôleur) de Symfony sépare la logique, l'interface utilisateur et le flux de contrôle de votre application. Imaginez que vous soyez un peintre et qu'au lieu d'avoir toutes vos couleurs mélangées, elles soient soigneusement séparées sur une palette, prêtes à être utilisées pour créer votre chef-d'œuvre. C'est ce que la structure MVC de Symfony fait à votre code - elle l'organise proprement pour faciliter la gestion et l'amélioration.

Bien que le framework soit historiquement basé sur le modèle MVC, qui est toujours utilisé aujourd'hui, notamment si vous utilisez Stimulus et Turbo, il est bien sûr possible de créer uniquement une API avec Symfony, notamment via API Platform.

En ce qui me concerne, c'est ce que j'adore avec Symfony, je ne me concentre pas sur des choses qui, au final, ne m'intéresse pas, l'exemple le plus parlant de ça est mon application Symfony UX/Turbo.

Pendant son développement ma seule question était "comment je fais pour offrir une expérience dingue, que ce soit pour les clients ou pour le restaurateur", par ce qu’à la fin... il n'y a que ça qui compte.

Bien sûr parfois j'ai dû aller modifier des choses plus en profondeur, mais ce n'est pas un problème, la documentation est très bien faite et vous permet d'aller mettre les mains dans le cambouis quand c'est nécessaire.

À ce jour, cette application a pris la réservation de 10aines de millier de personnes, et va prochainement s'ouvrir à d'autres restaurants... Les retours des clients me conviennent, "C'est chaleureux", "C'est simple".

Oui, cela à été pensé comme ça, toute mon attention et mon énergie étaient uniquement focus là-dessus, en fin de développement j'ai pris le temps d'optimiser les performances, mais avant ça. Je pensais uniquement à ce qui comte réellement, mes clients.

Et pour ça, merci Symfony ❤️.

Pourquoi utiliser Symfony pour vos projets de développement web ?

Il est temps de se plonger plus en détail sur ce qu'apporte Symfony pour les développeurs (comme moi)

La symphonie des avantages

(Non, j'arrêterais pas ces jeux de mots)

L'efficacité

Vous vous souvenez de ces tâches répétitives qui vont gonfle et qui vous donne l'impression de faire un truc inutile ? Avec Symfony, elles appartiennent au passé. Symfony s'occupe de toutes les tâches banales, vous permettant de vous concentrer sur les aspects les plus excitants de votre projet. En bref, Symfony est le Merlin de votre Roi Arthur, faisant toute la magie pendant que vous profitez du spectacle.

(Pour un exemple plus poussé, regardez le dernier paragraphe du chapitre précédent)

La flexibilité

La modularité de Symfony est son atout majeur. Vous avez besoin de remplacer un bundle ou un composant par un autre ? N'hésitez pas. Symfony est aussi flexible qu'un gymnaste, vous permettant de plier et de tordre votre projet à votre guise.

Évolutivité

Au fur et à mesure que votre projet grandit, Symfony grandit avec lui. Sa conception vous permet d'ajouter plus de fonctionnalités sans surcharger la structure existante. C'est comme avoir un sac à dos qui s'agrandit comme par magie pour accueillir tout ce que vous voulez transporter. Et plus tard, quand votre entreprise sera une multinationale, vous pourrez tout découper en microservice, toujours avec le même framework...

Les applications du monde réel qui utilisent Symfony...

On parle, on parle, mais nous ce qu'on veut, c'est créer des choses, non ? Prenoms le temps de regarder quels projet et entreprise dans le monde utilisent Symfony :

Comment ça les quatre derniers, ce sont des projets à moi ? Je ne vois pas du tout de quoi vous parlez,

Symfony et les autres frameworks PHP

Dans le monde des frameworks PHP, Symfony n'est pas sans concurrence. Laravel, CodeIgniter et Zend ont également leurs fan-clubs. Mais qu'est-ce qui distingue Symfony ?

Comparé à Laravel, qui est considéré comme plus convivial pour les débutants, Symfony brille par son écosystème étendu et mature et par un plus grand nombre de composants réutilisables. C'est comme choisir entre une voiture de sport et un véhicule utilitaire. Bien sûr, la voiture de sport est peut-être plus tape-à-l'œil, mais le véhicule utilitaire vous emmènera et permettra plus de choses.

Face à CodeIgniter, Symfony l'emporte grâce à sa communauté active et à ses meilleures normes de codage. CodeIgniter peut sembler être la solution de facilité, mais Symfony est la voie qui mène à un meilleur code et à des applications pérennes.

Enfin, dans le face-à-face avec Zend, Symfony apparaît comme l'option la plus efficace et la moins complexe. Zend est comme une énorme boîte à outils avec tous les outils possibles. Cela peut sembler impressionnant, mais lorsque vous êtes pressé, vous avez du mal à trouver le tournevis. Symfony, en revanche, fournit juste les bons outils dans un paquetage soigné et accessible.

Symfony et Ruby on Rails

Je devais de m'en parler, car ils sont très similaire, Ruby est je dirais plus présent dans le continent nord-américain, alors que Symfony lui c'est plus un européen.

Ruby on Rails, souvent appelé simplement Rails, est basé sur le langage de programmation Ruby et prône la convention plutôt que la configuration. Il est convivial, efficace et doté de nombreuses fonctionnalités intégrées, à l'instar d'un musicien qui ne se contente pas de jouer, mais qui chante et danse. Rails est très apprécié dans la création de "Proof of concept (POC)", quand on a une idée de projet et qu'on veut rapidement la mettre en œuvre.

D'autre part, Symfony, notre maestro dans le monde PHP, excelle dans la flexibilité, la réutilisation et la modularité, fournissant un environnement robuste pour des applications plus grandes et plus complexes.

Il faut savoir, que les deux frameworks se ressemblent et ont malgré tout une philosophie proche, il se copie parfois, par exemple depuis la fin de Symfony 5 et début Symfony 6, hotwired a été intégré à Symfony, sachant que l'origine de Hotwired vient de nos amis de chez 37signals, les créateurs de Rails.

En fin de compte, le choix entre Symfony et Rails dépend des exigences de votre projet, de votre aisance avec PHP ou Ruby, et de la « mélodie spécifique que vous souhaitez faire jouer à votre application web » (ou votre site web) !

Cela devrez vous donner envie de creuser encore plus le sujet, non ?

Conclusion

Et voilà, l'article sur Symfony touche à sa fin, j'ai essayer de rendre cela le plus amusant possible pour vous donner envie d'y jeter un œil.

Dans un prochain article, nous irons un peu plus loin dans les fonctionnalités de Symfony 🙂.

Quand à moi, je vais continuer de jouer avec, que ce soit en améliorant ce blog, en travaillant sur des projets clients ou encore en lançant des "side projects".

Passez une très bonne journée 😁.