我希望将已经实例化的对象传递给我的服务构造函数,而不是创建一个新对象,创建一个新对象,我这样做:
services:
ExampleService:
class: Ex\ModelBundle\lib\Ex\ExSave
LoginService:
class: Snap\ModelBundle\Service\Login
arguments: ["@doctrine.orm.entity_manager", "@ExampleService"]
如何将已经实例化的ExampleService传递给LoginService
答案 0 :(得分:0)
默认情况下,所有服务都有container
范围,根据文档的含义:
每次从此容器请求时都会使用相同的实例。
因此,您创建了ExampleService
,但对该服务的任何其他后续请求将返回其先前创建的实例。
这一切都归结为多个服务可以(并且将会)使用ExampleService
的共享实例。
或者,您可以使用 Setter Injection 。
基本上,您不会将@ExampleService
传递给__construct
,而是将单独的setter设置为属性值(在服务中)。然后像往常一样使用您的服务。