我想把一个已经安装好的对象传递给我的服务构建者,而不是创建一个新的对象,来创建一个我这样做的:
services:
ExampleService:
class: Ex'ModelBundle'lib'Ex'ExSave
LoginService:
class: Snap'ModelBundle'Service'Login
arguments: ["@doctrine.orm.entity_manager", "@ExampleService"]
我如何将已安装的ExampleService传递给登录服务
默认情况下,所有服务都有container
作用域,根据文档的意思是:
每次从该容器请求时,都会使用相同的实例。
因此,您创建了ExampleService
,但对该服务的任何其他后续请求都将返回其先前创建的实例。
归根结底,多个服务可以(并且将)使用ExampleService
的共享实例。
或者,您可以使用Setter Injection。
基本上,您不将@ExampleService
传递给__construct
,而是将其传递给单独的setter,后者将设置属性值(在服务中)。然后你照常使用你的服务。