【发布时间】:2015-03-05 01:39:16
【问题描述】:
我有一个关于 symfony2 惰性服务的问题。我们什么时候应该使用惰性服务,什么时候应该避免它们?如果我们使用惰性服务,是否会产生任何开销?
【问题讨论】:
标签: php symfony dependency-injection lazy-loading proxies
我有一个关于 symfony2 惰性服务的问题。我们什么时候应该使用惰性服务,什么时候应该避免它们?如果我们使用惰性服务,是否会产生任何开销?
【问题讨论】:
标签: php symfony dependency-injection lazy-loading proxies
在某些情况下,您可能希望注入一个实例化有点繁重的服务,但并不总是在您的对象中使用。例如,假设您有一个 NewsletterManager,并且您向其中注入了一个邮件服务。您的 NewsletterManager 上只有少数方法实际使用了邮件程序,但即使您不需要它,邮件服务也会被实例化以构建您的 NewsletterManager。
配置惰性服务是解决此问题的方法之一。使用惰性服务时,实际上会注入邮件服务的“代理”。它的外观和行为与邮件程序类似,只是邮件程序在您以某种方式与代理交互之前不会被实际实例化。
是的,有一些开销。但它是最小的。当你不需要它们时,你应该避免使用惰性服务。 (就这么简单)。
如果您的服务 A 有 3 种方法并且依赖于 B 和 C。如果您知道 B 用于所有 3 种方法中并且 C i 仅用于一种方法中,那么您可以考虑将 C 声明为懒惰的。如果 C 是一个繁重的服务,你应该声明它是惰性的。在此示例中,将 B 声明为惰性不会有任何好处...所以不要... =)
【讨论】: