以下是一个来自Symfony2网站的示例,关于定义自定义服务(YAML表示法):
services:
newsletter_manager:
class: %newsletter_manager.class%
arguments: [@mailer, @templating]
是否有默认Symfony2服务对象列表可以作为参数注入自定义服务(例如@mailer
,@templating
,@doctrine
)?
我知道它们来自Container
(例如,在每个Controller
类中都可用)。我试图转储所有服务,但我正在寻找更详细的清单:
php app/console container:debug
logger container Symfony\Bridge\Monolog\Logger
mailer container Swift_Mailer
translator n/a alias for translator.default
...
答案 0 :(得分:121)
命令行php app/console container:debug
显示您可以注入其他服务或从Controller with Controller::get($serviceName)
获取的服务列表。
此列表仅显示公开服务。将选项--show-private
添加到显示私有服务中。私有服务只能注入另一个服务,不能从Controller或任何ContainerAware访问......
编辑:从Symfony 2.7开始,使用debug:container
代替container:debug
答案 1 :(得分:5)
WebProfilerExtraBundle对此非常有用。
它还添加了一些非常有用的有关路由,资产和细枝的详细信息。作为一个学习在Symfony中思考的人,我真的很喜欢这个包。
答案 2 :(得分:5)
如果您想获得单个服务的详细信息,也可以这样做:
php app/console container:debug service_id
这将为您提供有关该服务的信息
答案 3 :(得分:3)
你可以使用
php app/console container:debug
获取所有可用公共服务ID的列表 或
php app/console container:debug --show-private
显示公共和私人服务ID
答案 4 :(得分:3)
您可以使用以下命令获取所需的服务详细信息:
php app/console container:debug | grep service_name
答案 5 :(得分:2)
您可以使用
列出服务php app/console debug:container log
如果您需要更多关于某项服务的信息,可以使用帮助
php app/console debug:container log --help