我正在使用HydratorPluginManager
(Zend \ Stdlib \ Hydrator \ HydratorPluginManager)在一个地点管理我的保湿器,并让经理负责我的保水器的验证(意味着检查我的保湿器是否正确实施了HydratorInterface
)。
我有一些使用这样的工厂创建的保湿器:
'service_manager' => array(
'factories' => array(
'My\Hydrators\SomeHydrator' => 'My\Hydrators\SomeHydratorFactory'
)
)
在我的配置文件中注册工厂后,ServiceManager
使用$serviceManager->get($name)
这些加水器没有任何问题。现在我想将ServiceManager
与HydratorManager
联系起来,这样如果我要求使用某种保湿剂:
$hydratorPluginManager->get($name)
其中$name
是用于注册的别名。所以在这个例子中它将是:
$hydratorPluginManager->get('My\Hydrators\SomeHydrator');
我的想法是,如果我像这样连接ServiceManager
:
$hydratorPluginManager->setServiceLocator($serviceManager)
它应该工作。但它并没有,我很困惑,为什么这不起作用......
我在这里错过了什么吗?
答案 0 :(得分:2)
您可以直接将加油器放入插件管理器中。 hydrator插件管理器的配置方式与服务管理器(invokables,工厂等)的配置方式相同,只有配置键不同,hydrators
而不是service_manager
您只需将工厂从service_manager
移至hydrators
...
'hydrators' => array(
'factories' => array(
'My\Hydrators\SomeHydrator' => 'My\Hydrators\SomeHydratorFactory'
)
),