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

Zend framework: how to pass creation options to services

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).

调用服务工厂时,我都无法传递创建选项

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

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

参考资料:https://github.com/zendframework/zend-servicemanager/issues/7

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

补充

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

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);