是否有Symfony2默认容器服务列表?

时间:2012-02-27 23:10:34

标签: symfony dependency-injection

以下是一个来自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
...

6 个答案:

答案 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