懒惰的服务

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 5.2,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

懒惰的服务

另请参阅

注入服务延迟的另一种方法是通过一个服务订阅者

为什么懒惰的服务?

在某些情况下,您可能想要注入的服务有点沉重的实例化,但并不总是使用在你的对象。例如,假设你有一个欧宝平台是合法的吗NewsletterManager你注射梅勒服务。对你只有几个方法欧宝平台是合法的吗NewsletterManager实际使用梅勒,但即使你不需要它,梅勒服务总是为了构建你的实例化欧宝平台是合法的吗NewsletterManager

配置懒惰的服务是一个问题的答案。懒惰的服务,“代理”的梅勒服务是注射。看起来,就像梅勒,除了梅勒实际上没有实例化,直到你与代理进行交互。

谨慎

懒惰的服务不支持最后类。

安装

为了使用懒惰的服务实例,您将需要安装ob娱乐下载symfony / proxy-manager-bridge包:

1
美元作曲家需要symfony / prob娱乐下载oxy-manager-bridge

配置

你可以服务标记为懒惰的通过操纵它的定义:

  • YAML
  • XML
  • PHP
1 2 3 4
#配置/ services.yaml服务:App \树枝\ AppExtension:懒惰:真正的

一旦你将服务注入到另一个服务,一个虚拟的代理具有相同签名的类代表服务应该被注入。当调用相同容器:get ()直接。

实际的类被实例化就会与服务交互(例如,调用它的一个方法)。

检查如果你的代理工作你可以检查接收到的对象的接口:

1 2
转储(class_implements (美元服务));/ /输出应包括“ProxyManager \代理\ LazyLoadingInterface”

请注意

如果你不安装ProxyManager桥,容器将跳过懒惰的国旗和直接实例化服务,因为它通常会做的事情。

额外的资源

你可以阅读更多关于代理实例化,生成并初始化欧宝官网下载app文档的ProxyManager

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。