Zend Framework 2 -在HydratorPluginManager中设置serviceLocator不工作


Zend Framework 2 - Setting serviceLocator in HydratorPluginManager not working

我使用HydratorPluginManager (Zend'Stdlib'Hydrator'HydratorPluginManager)在一个地方管理我的水合器,并让经理负责我的水合器的验证(意味着检查我的水合器是否正确实现了HydratorInterface)。

我有一些我用工厂创建的水合器,像这样:

'service_manager' => array(
    'factories' => array(
        'My'Hydrators'SomeHydrator' => 'My'Hydrators'SomeHydratorFactory'
    )
)

在我的配置文件中注册工厂后,这些水合器在我的ServiceManager使用$serviceManager->get($name)中没有任何问题。现在我想把ServiceManagerHydratorManager连接起来,这样如果我需要一个水合剂,可以使用:

$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'
    )
),