在Symfony中使用编译器传递有什么意义?
何时应该使用Extension类,何时编译器在Symfony中传递?
答案 0 :(得分:3)
他们提供服务定义。
通过创建编译器传递,您可以更新传递给服务的参数。
最常使用标记服务。
此外,它可用于:
在定义之前创建需要有关其他已定义服务的信息的新服务。
将参数交换或添加到您未编写的服务中。
在容器中创建和修改参数。
我使用编译器传递来注册Factory,这使我能够覆盖doctrine Repository。
您可以查看代码以更好地理解其工作原理:
https://gist.github.com/chalasr/77be8eee5e3ecd3c06ec
<强>更新强>
感谢@Sruj,我添加了我忘记Extension
Extension
也是依赖注入的一部分,尤其是配置
它的主要作用是跨应用程序包加载服务配置。
您可以使用imports
手动加载配置,而不是为您创建扩展程序。您的所有服务配置都是从您的捆绑包中注册的,并在整个应用程序中共享。
在应用配置中注册供应商时,将调用供应商的服务容器扩展。