我读到了这个:http://symfony.com/doc/current/book/service_container.html
它说:
$mailer = $this->get('my_mailer');
作为一个额外的奖励,Mailer服务只创建一次而且 每次请求服务时都会返回相同的实例。这是 几乎总是你需要的行为(它更灵活和 功能强大),但稍后我们将了解如何配置服务 有多个实例。
如何让我的服务拥有多个实例 - 即每当我到达服务时,我都会获得一个新实例?像$this->getNew()
之类的东西?
答案 0 :(得分:31)
您正在谈论服务的范围。你可以查看它们here。简而言之,将服务定义为范围原型而不是默认容器,依赖注入容器将在每次请求时创建一个新对象:
services:
my_service:
class: Someclass
scope: prototype
注意:自Symfony2.8起,scope: prototype
已被shared: false
取代。
# Symfony >= 2.8
services:
my_service:
class: Someclass
shared: false
答案 1 :(得分:7)
在Symfony> = 2.8中,不推荐使用范围属性,并删除版本3。您需要使用此处所述的共享设置http://symfony.com/doc/current/cookbook/service_container/shared.html