Sommaire
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) :
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 😁.
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 😛).
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" 😍.
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" :
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...
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.
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" :
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 ❤️.
Il est temps de se plonger plus en détail sur ce qu'apporte Symfony pour les développeurs (comme moi)
(Non, j'arrêterais pas ces jeux de mots)
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 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.
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...
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,
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.
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 ?
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 😁.