Voici un exemple, extrait du site Web Symfony2, sur la définition d’un service personnalisé (notation YAML):
services: newsletter_manager: class: %newsletter_manager.class% arguments: [@mailer, @templating]
Existe-t-il une liste des objects de service Symfony2 par défaut pouvant être injectés dans un service personnalisé en tant que parameters (tels que @mailer
, @templating
, @docsortingne
)?
Je sais qu’ils proviennent du Container
(qui est disponible, par exemple, dans chaque classe de Controller
). J’ai essayé de vider tous les services, mais je cherche une liste plus détaillée:
php app/console container:debug logger container Symfony\Bridge\Monolog\Logger mailer container Swift_Mailer translator n/a alias for translator.default ...
La ligne de commande php app/console container:debug
affiche la liste des services que vous pouvez injecter dans un autre service ou obtenir d’un Controller with Controller::get($serviceName)
.
Cette liste affiche uniquement les services publics . Ajoutez l’option --show-private
dans l’affichage des services privés . Les services privés ne peuvent être injectés que dans un autre service, non accessible depuis un contrôleur ou tout autre ContainerAware …
EDIT : à partir de Symfony 2.7, utilisez debug:container
au lieu de container:debug
WebProfilerExtraBundle est très utile pour cela.
Il ajoute également des détails sur le routage, l’assetic et le twig qui sont très utiles. En tant que personne qui apprend à penser dans Symfony, j’aime vraiment ce lot.
Vous pouvez également le faire si vous souhaitez obtenir des informations sur un seul service:
php app/console container:debug service_id
cela vous donnera des informations sur ce service
vous pouvez utiliser
php app/console container:debug
pour obtenir une liste de tous les identifiants de service public disponibles ou
php app/console container:debug --show-private
pour afficher les ID de service public et privé
vous pouvez utiliser la commande suivante pour obtenir les détails de service souhaités:
php app/console container:debug | grep service_name
Vous pouvez lister les services avec
php app/console debug:container log
Si vous avez besoin de plus d’informations sur certains services, vous pouvez utiliser l’aide
php app/console debug:container log --help