Programmation PHP avec Symfony/Bundle
Dans Symfony, on appelle bundle une bibliothèque prévue pour être installée dans Symfony comme module complémentaire au framework.
Configurer un bundle
modifierAprès installation avec composer, il doit généralement être configuré dans le dossier config/ par un fichier YAML à son nom. Pour connaître les configurations possibles :
php bin/console config:dump mon_bundle
La classe du bundle est instanciée dans :
config/bundles.php
Pour l'activer ou le désactiver de certains environnements, il suffit de l'ajouter un paramètre. Ex :
<?php
return [
// À instancier tout le temps
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
// À instancier seulement si dans le .env, APP_ENV=dev ou APP_ENV=test (les autres sont "false" par défaut)
Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
// À ne pas instancier dans les environnements de dev
Sentry\SentryBundle\SentryBundle::class => ['prod' => true],
];
Créer un bundle
modifierPar rapport à une application classique, la création d'un bundle possède des particularités du fait qu'il n'est prévu pour être utilisé que comme dépendance d'applications tierces[1]. Par exemple :
- Ses namespaces doivent démarrer par le nom du vendor et se terminer par le mot Bundle (ex : Symfony\Bundle\FrameworkBundle).
- Il doit contenir un fichier point d'entrée dans sa racine (ex : FrameworkBundle.php).
- Il peut avoir un .yaml de configuration dans config/packages à créer automatiquement à l'installation grâce à une classe étendant ConfigurationInterface[2].
Principaux bundles
modifierPackagist propose une liste des bundles Symfony les plus utilisés[3].
SensioFrameworkExtraBundle
modifierPermet de créer des annotations[4].
FOS
modifierFriendsOfSymfony[5] propose plusieurs bundles intéressants, parmi lesquels :
- FOSUserBundle : pour gérer des utilisateurs.
- FOSRestBundle : pour les API REST.
KNP
modifierKNP Labs offre également plusieurs bundles connus, dont un paginateur[6].
SonataAdmin
modifierCe bundle permet de créer rapidement un back-office pour lire ou modifier une base de données[7].
EasyAdmin
modifierMêmes principales fonctions que SonataAdmin mais plus léger[8].
Installation :
composer require easycorp/easyadmin-bundle
Pour l'accueil :
bin/console make:admin:dashboard
Pour une liste paginée d'entités Doctrine modifiables, avec liens vers leurs CRUD :
bin/console make:admin:crud
The PHP League
modifierRéférences
modifier- ↑ https://symfony.com/doc/current/bundles/best_practices.html
- ↑ https://symfony.com/doc/current/bundles/configuration.html#processing-the-configs-array
- ↑ https://packagist.org/packages/symfony/?query=symfony%20bundle&tags=symfony
- ↑ https://symfony.com/bundles/SensioFrameworkExtraBundle/current/index.html
- ↑ https://github.com/FriendsOfSymfony
- ↑ https://github.com/KnpLabs
- ↑ https://github.com/sonata-project/SonataAdminBundle
- ↑ https://symfony.com/bundles/EasyAdminBundle/current/index.html