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

时间:2014-05-26 13:43:46

标签: php zend-framework2 service-locator

我正在使用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)

它应该工作。但它并没有,我很困惑,为什么这不起作用......

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:2)

您可以直接将加油器放入插件管理器中。 hydrator插件管理器的配置方式与服务管理器(invokables,工厂等)的配置方式相同,只有配置键不同,hydrators而不是service_manager

您只需将工厂从service_manager移至hydrators ...

'hydrators' => array(
    'factories' => array(
        'My\Hydrators\SomeHydrator' => 'My\Hydrators\SomeHydratorFactory'
    )
),