Symfony Flex est un plugin Composer qui automatise la configuration des projets Symfony lors de l'installation de dépendances. Il utilise des recipes pour appliquer mécaniquement les tâches répétitives comme l'activation de bundles, la création de fichiers de configuration ou la mise à jour des variables d'environnement, évitant ainsi les étapes manuelles fastidieuses. Par exemple, l'alias composer require messenger déclenche automatiquement l'installation du vrai package symfony/messenger et applique sa configuration via une recette dédiée.
Flex repose sur un système d'alias centralisé dans un fichier index.json, où chaque alias (comme messenger) est mappé à un package Composer réel (ex: symfony/messenger). Ces alias sont résolus avant même que Composer ne traite les dépendances, simplifiant la syntaxe pour les développeurs. Le plugin s'intègre à Composer via des hooks d'événements, comme POST_UPDATE_CMD, pour appliquer les recettes après l'installation des packages.
Une recette est un ensemble d'instructions (fichiers et configurations) qui guide Flex dans la mise en place des éléments nécessaires au bon fonctionnement d'un package Symfony. Contrairement à Composer, qui gère uniquement les dépendances PHP, Flex étend ses fonctionnalités via une API publique de plugins, rendant l'automatisation possible sans modifier le cœur de Composer.