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