Skip to Content

Chapitre 1.1 — Qu’est-ce que Symfony ?

Partie 1 : Découvrir Symfony — Chapitre 1/5 Public : développeur Next.js / React expérimenté, bases anciennes en Symfony (v5), rouillé en PHP. Version de référence : Symfony 7.4 LTS (novembre 2025, PHP 8.2+).

⏱️ TL;DR

  • Symfony n’est pas une chose, c’est deux : une collection de ~50 composants PHP réutilisables indépendamment, et un framework full-stack qui les assemble.
  • Créé par Fabien Potencier (SensioLabs, aujourd’hui Symfony SAS), première version en 2005 ; le Symfony moderne date de la réécriture Symfony 2 (2011).
  • Les composants Symfony sont partout : Laravel, Drupal, phpBB, Composer, Magento… en dépendent. Vous utilisez déjà Symfony sans le savoir.
  • Philosophie : découplage, respect des standards PSR, rétrocompatibilité prise au sérieux (promesse de BC), LTS sur 4 ans.
  • Pour un dev Next.js : pensez à Symfony comme à NestJS, mais mûri depuis 20 ans — opinionated, structuré, batteries incluses, et adossé à un langage (PHP 8+) bien plus proche de TypeScript que vous ne l’imaginez.
  • Ce chapitre ne contient aucun code : c’est la carte mentale avant le territoire.

🎯 Objectifs

À la fin de ce chapitre, vous saurez :

  • distinguer « les composants Symfony » du « framework Symfony » et pourquoi cette distinction change tout ;
  • expliquer d’où vient Symfony, qui le maintient, et comment il gagne sa vie ;
  • citer des projets majeurs qui reposent sur Symfony sans être des applications Symfony ;
  • formuler la philosophie de Symfony (découplage, standards, stabilité) en une phrase ;
  • répondre à la question d’un collègue : « c’est quoi Symfony, en fait, par rapport à Node ? »

1. Le malentendu à dissiper d’abord

Quand on dit « Symfony », on désigne en réalité deux objets différents — et confondre les deux est la première source d’incompréhension pour un nouveau venu.

  1. Les composants Symfony (the Symfony Components) sont une cinquantaine de bibliothèques PHP autonomes, chacune résolvant un problème précis : gérer une requête HTTP (HttpFoundation), router une URL vers du code (Routing), construire une commande CLI (Console), valider des données (Validator), injecter des dépendances (DependencyInjection)… Vous pouvez installer un seul composant dans n’importe quel projet PHP, même sans Symfony.

  2. Le framework full-stack Symfony est ce qui se passe quand on assemble ces composants, qu’on y ajoute une configuration par défaut, des conventions de répertoires et un peu de « colle » (le composant HttpKernel, les bundles, Flex) — pour obtenir une application web complète prête à l’emploi.

💡 Pour un dev Next.js : c’est la différence entre une collection de packages npm indépendants (zod, pino, undici, commander…) et un framework qui les orchestre (Next.js, qui décide de la structure, du routing, du build). Symfony est les deux à la fois : l’équivalent d’un lodash géant et d’un Next.js, sous la même marque.

Cette dualité n’est pas un détail marketing. Elle explique la qualité du code : chaque composant doit être utilisable hors de Symfony, donc il ne peut pas dépendre d’un contexte global caché. Résultat : un code découplé, testé isolément, réutilisable. C’est aussi pourquoi tant d’autres projets PHP piochent dedans.

2. Une définition qui tient debout

Symfony est un framework web PHP open source (licence MIT) et un ensemble de composants réutilisables, conçu pour construire des applications web et des API robustes, maintenables et performantes, en s’appuyant sur les standards du langage et une architecture fortement découplée.

Décortiquons les mots qui comptent :

MotCe que ça implique concrètement
PHPLangage serveur (on y revient au chapitre 1.4). Symfony 7.4 exige PHP 8.2 minimum.
FrameworkIl impose une structure et inverse le contrôle : ce n’est pas vous qui appelez le framework, c’est lui qui appelle votre code (au bon moment).
Composants réutilisablesChaque brique s’installe seule via Composer et fonctionne sans le reste.
Open source (MIT)Gratuit, code ouvert, utilisable en commercial sans contrainte (contrairement au GPL de WordPress/Moodle — un point clé pour la monétisation, cf. Partie 17).
DécoupléVos classes ne « savent » pas qu’elles tournent dans Symfony ; on les teste et on les remplace facilement.
StandardsRespect des PSR (PHP Standards Recommendations) : autoloading PSR-4, interfaces HTTP PSR-7/15/17, logs PSR-3, cache PSR-6/16, conteneur PSR-11…

Depuis Symfony 5 : la définition n’a pas bougé, mais la façon de configurer a radicalement changé. En Symfony 5 vous écriviez encore beaucoup de YAML et des annotations (@Route, @ORM\Entity) dans des commentaires PHP. En 7.4, tout passe par des attributs PHP natifs (#[Route], #[ORM\Entity]) — de vrais éléments du langage, pas des chaînes dans des commentaires. On y reviendra en boucle ; retenez juste que si vos souvenirs de Symfony 5 sont « des @ dans des /** */ », ils sont périmés.

3. D’où vient Symfony ? (la version utile)

  • 2005 — Fabien Potencier, au sein de l’agence française SensioLabs, publie Symfony 1.0. À l’époque, c’est un framework inspiré de Ruby on Rails, monolithique, avec son propre ORM (Propel puis Doctrine).
  • 2011Symfony 2, une réécriture complète. C’est la naissance du Symfony moderne : l’idée des composants découplés, le conteneur d’injection de dépendances, les bundles, le HttpKernel. Tout ce que vous apprendrez dans ce cours descend de cette architecture.
  • 2015 → aujourd’hui — Symfony 3, 4, 5, 6, 7, 8. Chaque version majeure raffine, nettoie les dépréciations, et modernise avec PHP (typage, attributs, enums). Symfony 4 (2017) introduit Flex et l’approche « micro-framework qui grandit ». Symfony 7.0 (2023) et toute la lignée 7.x exigent PHP 8.2+. En novembre 2025, 7.4 LTS et 8.0 sortent ensemble (8.0 = 7.4 sans le code déprécié) ; 8.1 suit en mai 2026. On travaille sur la LTS 7.4.

Le détail des versions et du cycle de sortie fait l’objet du chapitre 1.2. Ce qu’il faut retenir ici : Symfony a 20 ans, il a survécu à toutes les modes, et son architecture actuelle est stable et éprouvée — l’inverse d’un projet JavaScript qui se réinvente tous les 18 mois.

4. Qui maintient Symfony, et comment il gagne sa vie

Un framework, ça se maintient. Derrière Symfony :

  • Symfony SAS (ex-SensioLabs) — l’entreprise française fondée par Fabien Potencier. Elle emploie des core developers, organise les SymfonyCon/SymfonyLive, et finance une partie du développement.
  • Un modèle économique sain et transparent : formation, certification, SymfonyInsight (analyse qualité de code), support LTS payant, et surtout Platform.sh / Upsun (l’hébergement PaaS cofondé par des gens de Symfony). Le framework reste 100 % gratuit et MIT ; l’argent vient des services autour.
  • Une communauté open source massive : des milliers de contributeurs sur github.com/symfony/symfony , un processus de RFC public, une gouvernance claire (core team, mergers).

💡 Pour un dev Next.js : le parallèle est Vercel ↔ Next.js. Next.js est open source et gratuit, mais Vercel (l’entreprise) l’emploie et gagne sa vie sur l’hébergement et les services. Symfony SAS est le « Vercel » de Symfony — à ceci près que Symfony a 20 ans de recul et une obsession de la stabilité que l’écosystème JS n’a pas encore.

Ce point n’est pas anecdotique pour vous : un framework porté par une entreprise pérenne et une communauté large, c’est un pari sûr pour un freelance qui investit du temps à le maîtriser (cf. Partie 17).

5. Symfony est partout (même là où vous ne le voyez pas)

Voici l’argument qui fait comprendre le poids réel de Symfony. Des projets énormes utilisent ses composants sans être des applications Symfony :

ProjetCe qu’il emprunte à Symfony
LaravelHttpFoundation, Routing, Console, Mailer, et bien d’autres composants Symfony sont au cœur de Laravel.
DrupalA migré son cœur sur les composants Symfony dès Drupal 8.
ComposerLe gestionnaire de paquets PHP lui-même utilise le composant Console de Symfony.
phpBB, Magento, PrestaShop, Sylius, Mautic, Bolt, ShopwareBâtis sur Symfony ou ses composants.
API PlatformLe framework d’API (qu’on utilisera intensivement en Partie 11) est construit sur Symfony.

Autrement dit : si vous écrivez du PHP moderne, vous touchez du Symfony, directement ou non. Apprendre Symfony, c’est apprendre les fondations de l’écosystème PHP contemporain — pas juste « un framework de plus ».

📚 Aller plus loin : la liste des composants est sur symfony.com/components . Parcourez-la une fois pour prendre la mesure de l’ampleur : chaque carte est une bibliothèque autonome.

6. La philosophie Symfony en trois piliers

6.1 Découplage (et injection de dépendances)

Le cœur idéologique de Symfony, c’est que votre code ne doit pas dépendre d’un état global caché. Une classe déclare ce dont elle a besoin (ses dépendances) dans son constructeur, et le framework les lui fournit (le fameux conteneur de services, Partie 5). Résultat : du code testable, remplaçable, lisible. Si vous venez de NestJS, vous êtes déjà à la maison — c’est la même idée d’IoC/DI.

6.2 Standards plutôt que magie

Symfony privilégie les standards PSR et les contrats explicites à la « magie » implicite. Là où d’autres frameworks devinent (méthodes dynamiques, conventions cachées), Symfony préfère que les choses soient déclarées — via des interfaces, des attributs, de la configuration explicite. C’est un peu plus verbeux au début, beaucoup plus prévisible à long terme.

6.3 Stabilité et rétrocompatibilité (la « BC promise »)

C’est le point que la plupart des devs JS n’ont jamais connu. Symfony publie une promesse de rétrocompatibilité : à l’intérieur d’une branche majeure (toute la lignée 7.x), votre code ne casse pas. Les fonctionnalités obsolètes sont dépréciées (signalées, mais toujours fonctionnelles) pendant toute une version majeure avant d’être supprimées à la suivante. On détaille ce mécanisme au chapitre 1.2 — mais imaginez : mettre à jour de 7.0 à 7.4 sans rien réécrire. Pour un dev habitué aux migrations Next.js douloureuses, c’est presque irréel.

⚠️ Piège : « framework stable » ne veut pas dire « framework figé ». Symfony innove beaucoup (AssetMapper, Symfony UX, le composant Scheduler, l’IA récemment…), mais il le fait sans casser l’existant. Ne prenez pas la stabilité pour de l’immobilisme : c’est une stabilité active.

7. Ce que Symfony n’est pas

Pour cerner un outil, il faut aussi dire ce qu’il n’est pas :

  • Ce n’est pas un CMS. WordPress, Drupal, Moodle sont des produits finis qu’on configure. Symfony est un framework : un point de départ pour construire un produit. (Si vous connaissez les cours Moodle/WordPress de l’auteur : là vous étiez utilisateur/intégrateur d’un produit ; ici vous êtes l’architecte.)
  • Ce n’est pas un langage. Symfony est écrit en PHP. Maîtriser Symfony sans PHP moderne est impossible — d’où la Partie 2 entièrement dédiée à PHP 8+.
  • Ce n’est pas « juste » un backend d’API. Il fait aussi tout le full-stack (HTML via Twig, formulaires, UX temps réel). Dans ce cours on exploite les deux faces (cf. l’app fil rouge BookLab).
  • Ce n’est pas réservé aux « grosses » applis. Grâce à Flex, un projet Symfony démarre minuscule (quelques fichiers) et grandit à la demande. On peut faire un micro-service de 3 routes comme une plateforme de 400 tables.

8. Le fil rouge : BookLab

Tout au long du cours, on construit BookLab, un SaaS de réservation (réserver des créneaux auprès de coachs, salles ou services). Une seule application Symfony qui présente deux visages :

Cette architecture — un back-office Symfony full-stack pour les admins + une API Symfony consommée par un front Next.js — n’est pas un choix arbitraire : c’est exactement le profil qui rend votre double compétence rare et bien payée. On y reviendra sans cesse.

✏️ Exercices

Exercice 1. Expliquez, en deux phrases à un collègue développeur JS, la différence entre « les composants Symfony » et « le framework Symfony ».

✅ Solution

Les composants Symfony sont des bibliothèques PHP indépendantes (routing, HTTP, console, validation…), qu’on peut installer et utiliser une par une dans n’importe quel projet PHP — un peu comme des packages npm ciblés. Le framework full-stack Symfony est l’assemblage de ces composants, avec une configuration et des conventions par défaut, pour obtenir une application web complète — comme Next.js assemble et orchestre tout un écosystème.

Exercice 2. Citez trois projets majeurs (non-Symfony) qui utilisent des composants Symfony, et expliquez pourquoi c’est un argument fort quand on hésite à apprendre Symfony.

✅ Solution

Laravel (utilise HttpFoundation, Routing, Console…), Drupal (cœur bâti sur les composants Symfony depuis la v8), Composer (utilise le composant Console). C’est un argument fort car apprendre Symfony, ce n’est pas apprendre « un framework de niche » : c’est apprendre les fondations partagées de tout l’écosystème PHP moderne. Le savoir se transfère (jusqu’à Laravel, Drupal, etc.), ce qui sécurise l’investissement d’apprentissage.

Exercice 3. La « promesse de rétrocompatibilité » de Symfony : qu’est-ce que ça change concrètement dans la vie d’un développeur, comparé à ce que vous connaissez côté JavaScript ?

✅ Solution

Elle garantit qu’à l’intérieur d’une branche majeure (toute la 7.x), le code écrit pour 7.0 fonctionne encore en 7.4 sans réécriture : les fonctions obsolètes sont dépréciées (signalées) avant d’être supprimées à la version majeure suivante seulement. Concrètement : des montées de version prévisibles et peu coûteuses, un contraste net avec les mises à jour souvent cassantes de l’écosystème JS (breaking changes fréquents entre versions mineures de certaines libs). Pour un freelance, ça signifie moins de temps perdu en maintenance subie.

Exercice 4. Pourquoi la licence MIT de Symfony (vs GPL de WordPress/Moodle) est-elle importante si votre objectif est de vendre un produit basé dessus ?

✅ Solution

La licence MIT est permissive : elle autorise l’usage commercial, la modification et la distribution sans obligation de publier votre propre code sous la même licence. Vous pouvez donc bâtir un produit propriétaire (un SaaS, un logiciel vendu) sur Symfony sans être contraint d’ouvrir votre code. Le GPL (WordPress, Moodle) est « copyleft » : il impose des contraintes de partage sur les œuvres dérivées, ce qui complique certains modèles de vente. Pour la monétisation (Partie 17), MIT vous laisse toute liberté.

🧠 Quiz de révision

1. « Symfony » désigne deux choses : lesquelles ?

Une collection de ~50 composants PHP réutilisables indépendamment, et un framework full-stack qui les assemble en application complète.

2. Qui a créé Symfony, et en quelle année est né le « Symfony moderne » ?

Fabien Potencier (SensioLabs, aujourd’hui Symfony SAS). Symfony 1.0 date de 2005, mais le Symfony moderne (composants, DI, bundles) naît avec la réécriture Symfony 2 en 2011.

3. Nommez un projet qui utilise des composants Symfony sans être une application Symfony.

Au choix : Laravel, Drupal, Composer, phpBB, Magento, PrestaShop, Shopware… (Composer et Laravel sont les exemples les plus parlants.)

4. Quelle est la version de PHP minimale requise par Symfony 7.4 ?

PHP 8.2 minimum (on utilisera plutôt 8.3/8.4 dans ce cours).

5. Vrai ou faux : « Symfony est stable, donc il n’innove plus. »

Faux. Symfony innove beaucoup (AssetMapper, Symfony UX, Scheduler, IA…), mais sans casser l’existant grâce à la promesse de rétrocompatibilité. C’est une stabilité active, pas de l’immobilisme.


Prochain chapitre : 1.2 — Histoire & versions — le cycle de release, les LTS, la promesse de BC, et pourquoi on choisit précisément la 7.4.