我想配置一个服务,以自动注入一个现有的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实例标识为服务?
答案 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>