我使用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)
应该可以。但它没有,我很困惑为什么这是不工作…
我错过了什么吗?
你可以直接把水合器放在插件管理器中。hydrator插件管理器的配置方式与服务管理器相同(可调用对象、工厂等),只是配置键不同,hydrators
而不是service_manager
你只需要把你的工厂从service_manager
搬到hydrators
…
'hydrators' => array(
'factories' => array(
'My'Hydrators'SomeHydrator' => 'My'Hydrators'SomeHydratorFactory'
)
),