2012-02-27 44 views
51

下面是一個例子,從Symfony2的網站上得到大約定義一個定製服務(YAML符號):有沒有Symfony2默認容器服務的列表?

services: 
    newsletter_manager: 
     class:  %newsletter_manager.class% 
     arguments: [@mailer, @templating] 

有默認的Symfony2服務的對象列表可以注入定製服務作爲參數(如@mailer,@templating,@doctrine)?

我知道他們來自Container(例如,在每個Controller類中都可用)。我tryed傾倒的所有服務,但我正在尋找一個更詳細的列表:

php app/console container:debug 

logger container Symfony\Bridge\Monolog\Logger 
mailer container Swift_Mailer 
translator n/a alias for translator.default 
... 
+0

定義'更詳細的清單'。 – meze 2012-02-28 06:37:48

+0

我確定我在參考區域的symfony.com網站上看到了「開箱即用」的所有標準版服務的列表。但我現在找不到它。 – Henry 2015-03-12 17:35:20

+1

'php app/console container:debug'會給你所有已註冊服務的列表 – 2015-09-01 13:37:43

回答

119

命令行php app/console container:debug顯示的服務列表中,你可以注入另一個服務或從Controller with Controller::get($serviceName)得到。

此列表僅顯示public服務。添加選項--show-private進入顯示私人服務。私人服務只能在其他服務,而不是從一個控制器或任何ContainerAware訪問被注入...

編輯:從Symfony的2.7,使用debug:container代替container:debug

+3

使用「container:debug」命令從版本2.7開始已被棄用,並且將在3.0中被刪除。改爲使用「調試:容器」。 => https://github.com/symfony/symfony/blob/c8475c938d55eb8e7c7df53177b346012b39159c/src/Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php#L99 – Shimrra 2015-10-29 15:43:13

+0

控制檯中的Symfony 3. – user1460043 2016-02-24 10:17:50

5

WebProfilerExtraBundle是這個非常有用的。

它還增加了一些有關路由,資產和樹枝的細節,這些都非常有幫助。作爲一個學習思考Symfony的人,我真的很喜歡這個包。

5

,如果你想獲得一個服務的細節,你也可以這樣做:

php app/console container:debug service_id 

這會給你上的服務,信息

+0

移動到'倉/ console'運行'php app/console container:debug'來列出服務。 – 2015-06-23 13:00:28

2

可以使用

php app/console container:debug 

到獲取所有可用公共服務ID列表 或

php app/console container:debug --show-private 

顯示公共和私人服務ID

3

你可以用下面的命令來獲得所需的服務細節:

php app/console container:debug | grep service_name 
2

如果您需要更多的可以列出服務與

php app/console debug:container log 

關於一些服務你可以使用幫助

php app/console debug:container log --help