Symfony Flex est une approche moderne introduite avec Symfony 4 pour simplifier l’installation et la configuration des dépendances dans un projet. Cet outil remplace l’ancien système de « bundles », qui nécessitait souvent une intervention manuelle fastidieuse pour configurer de nouvelles dépendances. Avec Symfony Flex, la configuration par défaut est automatiquement appliquée, ce qui rend le processus plus fluide et opérationnel dès l’installation.
La principale innovation de Flex réside dans sa capacité à associer une configuration prête à l’emploi aux dépendances installées. Dans la majorité des cas, cette configuration par défaut ne nécessite aucune modification, ce qui permet aux développeurs de se concentrer sur la logique métier.
Symfony Flex s’appuie sur des « recettes », décrites dans des fichiers JSON, qui indiquent les étapes nécessaires pour intégrer une dépendance dans un projet Symfony.
2. Fonctionnement de Symfony Flex
Symfony Flex est une extension de Composer, l’outil de gestion de dépendances présenté lors de la mise en place d’un projet Symfony. Concrètement, Flex ajoute une couche de traitement supplémentaire à Composer. Lorsque vous utilisez la commande composer require nom_dependance
, Flex vérifie l’existence d’une recette associée et, le cas échéant, l’applique automatiquement. Si aucune recette n’existe, Composer procède à une installation standard.
Flex utilise des dépôts pour accéder aux recettes, principalement hébergés sur GitHub :
- Dépôt principal de recettes : https://github.com/symfony/recipes Ce dépôt contient des recettes pour les packages officiels de Symfony. Flex y recherche par défaut.
- Dépôt communautaire de recettes : https://github.com/symfony/recipes-contrib Ce dépôt regroupe des recettes créées par la communauté. Ces recettes sont fonctionnelles, mais les packages associés peuvent ne pas être activement maintenus. Flex demande toujours une confirmation avant d’installer une recette de ce dépôt.
Les recettes encapsulent des dépendances Composer avec leur configuration associée. De plus, Flex utilise parfois des alias pour simplifier les commandes. Par exemple, au lieu d’utiliser le nom complet sensio/framework-extra-bundle
, vous pouvez utiliser l’alias annotation
lors de l’installation.
3. Les Recettes Symfony
Les recettes Symfony sont décrites dans des fichiers manifest.json
, similaires au fichier composer.json
. Ces fichiers détaillent les actions à effectuer lors de l’installation d’une dépendance.
Exemple d’utilisation : cs-fixer
Prenons l’exemple de l’outil cs-fixer, développé par FriendsOfPHP, qui permet de reformater le code PHP. Voici les étapes pour installer cette recette :
- Recherche de la recette : La dépendance est identifiée comme
friendsofphp/php-cs-fixer
. Flex permet d’utiliser l’aliascs-fixer
. - Contenu de la recette : La recette associe la dépendance à des actions spécifiques décrites dans le fichier
manifest.json
:{ "aliases": ["cs-fixer", "php-cs-fixer"], "copy-from-recipe": { ".php-cs-fixer.dist.php": ".php-cs-fixer.dist.php" }, "gitignore": [ "./php-cs-fixer.php", "./php-cs-fixer.cache" ] }
Ce fichier précise :
- Les alias permettant d’utiliser des noms simplifiés.
- Une action
copy-from-recipe
pour copier des fichiers dans le projet. - Des règles
gitignore
pour éviter d’ajouter certains fichiers au dépôt Git.
- Installation : Exécutez la commande suivante pour installer cs-fixer :
composer require cs-fixer
Flex installera la dépendance et copiera automatiquement le fichier
.php-cs-fixer.dist.php
dans le projet.
Exemple supplémentaire : Monolog
Pour installer Monolog, un outil de gestion des logs, utilisez la commande :
composer require logger
Flex associera cet alias à monolog/monolog
, configurera le logger par défaut pour Symfony et ajoutera la configuration nécessaire dans les fichiers du projet.
4. Liens utiles
- Documentation officielle Symfony Flex : https://symfony.com/doc/current/setup/flex.html
- Liste des recettes Symfony : https://github.com/symfony/recipes
- Dépôt communautaire de recettes : https://github.com/symfony/recipes-contrib
- Tutoriel pour créer une recette Flex : https://symfony.com/doc/current/setup/flex_recipes.html
Symfony Flex simplifie considérablement l’installation et la configuration des dépendances, rendant le développement avec Symfony encore plus productif. Grâce à l’intégration automatique des recettes, vous pouvez vous concentrer sur l’écriture de fonctionnalités plutôt que sur la configuration manuelle. Si vous souhaitez découvrir plus d’exemples, explorez les dépôts de recettes et essayez d’installer des outils utiles à votre projet.