如何将Symfony DI Container本身注入服务?

时间:2017-03-02 21:11:20

标签: php symfony

我想配置一个服务,以自动注入一个现有的DI容器。我的ContentQuery类已经extends了另一个类,因此它必须实现ContainerAwareInterface并使用call块配置实际注入:

<services>
  <service id="my_module.model.content_query" class="MyModule\Model\ContentQuery">
    <call method="setContainer">
      <argument type="service" id="container" />
    </call>
  </service>
</services>

问题是我不知道如何在XML中识别Container本身。使用上面的配置,我收到此错误:

  

服务“my_module.model.content_query”依赖于不存在的服务“容器”

我宁愿在PHP中执行此操作,我认为我可以很容易地解决这个问题,但此时使用XML的决定已不在我手中。那么有没有办法将Container实例标识为服务?

1 个答案:

答案 0 :(得分:0)

韦尔普。发布后大约一分钟我发现了。 :P

只需要指定id="service_container"而不仅仅是&#34;容器&#34;:

<services>
  <service id="my_module.model.content_query" class="MyModule\Model\ContentQuery">
    <call method="setContainer">
      <argument type="service" id="service_container" />
    </call>
  </service>
</services>