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
[modifier | modifier le wikicode]Aprè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
[modifier | modifier le wikicode]Par 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
[modifier | modifier le wikicode]Packagist propose une liste des bundles Symfony les plus utilisés[3].
SensioFrameworkExtraBundle
[modifier | modifier le wikicode]Permet de créer des annotations[4].
FOS
[modifier | modifier le wikicode]FriendsOfSymfony[5] propose plusieurs bundles intéressants, parmi lesquels :
- FOSUserBundle : pour gérer des utilisateurs.
- FOSRestBundle : pour les API REST.
KNP
[modifier | modifier le wikicode]KNP Labs offre également plusieurs bundles connus, dont un paginateur[6].
SonataAdmin
[modifier | modifier le wikicode]Ce bundle permet de créer rapidement un back-office pour lire ou modifier une base de données[7].
EasyAdmin
[modifier | modifier le wikicode]Mê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
[modifier | modifier le wikicode]Voir https://github.com/thephpleague.
Références
[modifier | modifier le wikicode]- ↑ 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