我是否可以使用抽象工厂通过服务定位器获取非共享对象



我已经找了一段时间了,但找不到方法,或者是否有可能。

我有一个抽象工厂,默认情况下会给我共享对象。有没有办法告诉服务定位器每次请求服务时都给我一个新实例?

共享配置参数似乎仅适用于可调用对象$serviceManager->setShared()也不起作用,因为服务的名称从未注册(因此抽象工厂)。

默认情况下,所有服务都是共享的,它们的创建方式没有区别。

$serviceManager->get('foo') 的第一次调用将创建服务的实例,然后将该值存储在内存中,由其规范名称键入。

$serviceManager->get('foo') 的第二次调用将匹配此存储值并返回相同的实例。

上述情况的明显例外是,如果您在服务管理器上禁用"默认共享"选项,或者专门将false值添加到Module.php或模块配置中的shared配置键。

最新更新