service doit être le FQCN de la classe # Avant services: app.rot13.transformer: class: App\Util\Rot13Transformer parameters: [ @logger, ... ] # --- # $this->get('app.rot13.transformer') # Après services: App\Util\Rot13Transformer: autowire: true # --- # $this->get(Rot13Transformer::class)
contrats (interfaces) Exemple : Une classe qui implémente “EventSubscriberInterface” sera automatiquement taguée “event.kernel_subscriber” # Avant services: app.rot13.transformer: class: App\Util\Rot13Transformer tags: [kernel.event_subscriber] # Après services: app.rot13.transformer: class: App\Util\Rot13Transformer autoconfigure: true
/ autoconfigure / public services: # default configuration for services in this file _defaults: autowire: true # Automatically injects dependencies in your services. autoconfigure: true # Automatically registers your services as commands, etc. public: false # Allows optimizing the container by removing unused services; # this also means fetching services directly from the # container via $container->get() won't work.
# makes classes in src/ available to be used as services # this creates a service per class whose id is the fully-qualified class name App\: resource: '../src/*' exclude: '../src/{Entity,Migrations,Tests,Kernel.php}'
“controllers as a service” Il est possible d’auto-injecter dans les actions des services services: # controllers are imported separately to make sure services can be injected # as action arguments even if you don't extend any base controller class App\Controller\: resource: '../src/Controller' tags: ['controller.service_arguments'] # public function contact(Request $request, Mailer $mailer) { // ... }
configure Il y a des recipes officielles, validées par la core team : github.com/symfony/recipes Et les recipes contrib github.com/symfony/recipes-contrib Flex utilise des recipes
Fichiers (config, routing ou autre) à créer • Paramètre à ajouter dans le DIC • Entrées à ajouter dans .gitignore, .env, etc • Tâche(s) à lancer après l'installation Une recipe Flex
installer javiereguiluz/easyadmin-bundle Les alias ne sont possibles qu’avec les recipes officielles. Système de "pack" : composer req orm va automatiquement installer : • doctrine/orm • doctrine/doctrine-bundle • doctrine/doctrine-migrations-bundle Les alias et les packs