Zend框架:如何将创建选项传递给服务

时间:2016-11-20 10:40:16

标签: zend-framework zend-framework2 zf3

module.config.php中注册服务时

'service_manager' => [
    'factories' => [
        \Path\To\Your\Service\AService => \Path\To\Your\Service\Factory\AServiceFactory,
    ]
]

在ZF2(工厂实施MutableCreationOptionsInterface)和ZF3(通过$container->get(\Path\To\Your\Service\AService::class, $options))中调用服务工厂时,我无法传递创建选项。

有人能告诉我如何将创建选项传递给服务吗?

1 个答案:

答案 0 :(得分:1)

MutableOptions目前仅适用于插件管理器实例;服务管理器没有实现它。这就是你看到差异的原因。

Références:https://github.com/zendframework/zend-servicemanager/issues/7

示例:https://samsonasik.wordpress.com/2014/08/14/zend-framework-2-using-creationoptions-in-pluginmanager/

我的解决方案是向AService类添加一个具有流畅模式的方法:

class AService
{
    public function __construct(...)
    {
        //your code, you can inject variables from $container by AServiceFactory
    }
    public function setOptions($options)
    {
        // your setting from $options
        ...
        // fluent pattern
        return $this; 
    }
}

使用您的服务:

$container->get(\Path\To\Your\Service\Aservice::class)->setOptions($options);