Programmation PHP avec Symfony/Bundle

Un livre de Wikilivres.

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]

Fonctionnalité filtre de EasyAdminBundle.

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]