我读到了这篇:http://symfony.com/doc/current/book/service_container.html
它说:
$mailer = $this->get('my_mailer');
Run Code Online (Sandbox Code Playgroud)
作为额外的奖励,Mailer服务仅创建一次,并且每次您请求服务时都返回相同的实例.这几乎总是您需要的行为(它更灵活,更强大),但稍后我们将了解如何配置具有多个实例的服务.
如何使我的服务具有多个实例 - 即每当我到达服务时,我都会获得一个新实例?什么样的$this->getNew()东西?
Sgo*_*kes 32
您正在谈论服务的范围.你可以在这里查找它们.简而言之,将服务定义为范围原型而不是默认容器,依赖注入容器将在每次请求时创建一个新对象:
services:
my_service:
class: Someclass
scope: prototype
Run Code Online (Sandbox Code Playgroud)
注意:既然Symfony2.8 scope: prototype已经被替换了shared: false.
# Symfony >= 2.8
services:
my_service:
class: Someclass
shared: false
Run Code Online (Sandbox Code Playgroud)
在Symfony> = 2.8中,不推荐使用scope属性,并删除版本3.您需要使用此处所述的共享设置http://symfony.com/doc/current/cookbook/service_container/shared.html
| 归档时间: |
|
| 查看次数: |
8388 次 |
| 最近记录: |