如何向容器中注入实例

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.3,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

如何向容器中注入实例

在某些应用程序中,您可能需要将类实例作为服务注入,而不是配置容器来创建新实例。

例如,内核中的服务被注入到容器中欧宝娱乐app下载地址内核类:

12 3 4 5 6 7 8 9 10 11 12 13
/ /……摘要内核实现了KernelInterfaceTerminableInterface/ /……受保护的函数initializeContainer()/ /……->容器->集(“内核”);/ /……}}

调用在运行时设置的服务合成服务.必须配置此服务,以便容器在编译期间知道该服务的存在(否则,依赖于内核将得到一个“服务不存在”错误)。

为了做到这一点,在你的服务定义配置中将服务标记为合成服务:

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:#合成服务不指定类app.synthetic_service:合成:真正的

现在,您可以使用容器::设置()

1 2 3
//实例化合成服务服务的=……;容器->集(“app.synthetic_service”服务的);
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。