如何动态禁用服务的共享实例化



在Zend 2中,当我们多次请求服务时,我们使用函数get()来获取相同的服务实例。它在第一次创建并在请求期间缓存。这就是共享服务。

  $ar = $this->serviceLocator->get('ActionResponsibility');

现在,非共享服务将在每次请求时创建一个新实例。要做到这一点,我们必须更改配置文件,如下所示:

<?php
return [
'service_manager' => [
    'invokables' => [
        'MyService' => 'ApplicationServiceMyService',
        'AnotherService' => 'ApplicationServiceAnotherService',
    ],
    'shared' => [
        'MyService' => false,
        'AnotherService' => false,
        'ThirdPartyService' => true,
    ],
    // [...]
 ]
];

问题是,我们如何才能得到一个新的实例,只有当需要在代码中,是不是有一种方法在使用get()函数来强制一个新的实例,而不是缓存的副本?

您可以使用build方法而不是get来检索新的非缓存实例。

$ar = $this->serviceLocator->build('ActionResponsibility');

最新更新