Symfony Service有多个实例

时间:2014-08-04 22:33:26

标签: php symfony

为什么在每次请求后调用我的服务的构造函数?我只希望它在我的应用程序的生命周期内执行一次。

我希望我的服务的构造函数只能在我的应用程序生命周期内运行一次,因为the documentation表明:

  

$ mailer = $ this-> get('my_mailer');

     

作为一个额外的奖励,Mailer服务只创建一次而且   每次请求服务时都会返回相同的实例。这是   几乎总是你需要的行为(它更灵活和   功能强大),但我们稍后会了解如何配置服务   有多个实例。

但是,当我调用该服务时,我会获得一个新实例。每个请求都会发生这种情况

可能类似的帖子

2 个答案:

答案 0 :(得分:2)

这意味着它是从请求到响应的相同实例。如果你在那一生中调用它,它将返回相同的。如果你在另一个请求中调用它,它将为你提供一个新对象。

这就是PHP的工作方式,在执行结束时,所有内容都从内存中释放出来,每个数据和对象都被破坏。

答案 1 :(得分:0)

  

作为一个额外的奖励,Mailer服务只创建一次而且   每次请求服务时都会返回相同的实例。

这并不意味着您的服务将一劳永逸地实例化,直到时间结束:)

这意味着您的服务在执行脚本期间将成为单身人士。基本上,在执行页面/命令期间。

如果在您的控制器操作中,您调用了您的服务4次并且未在服务定义中设置选项scope="prototype",则它将仅作为单例实例化一次。

但是您更改了页面并在控制器中执行了另一个也调用您的服务的操作。 Php启动一个新进程,因此您的服务将作为一个新对象的实例。