Zend Framework 2 - настройка serviceLocator в HydratorPluginManager не работает

Я использую 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)

Он должен работать. Но это не так, и я очень смущен, почему это не работает...

Я что-то упустил здесь?


person Wilt    schedule 26.05.2014    source источник


Ответы (1)


Вы можете просто поместить гидраторы напрямую в менеджер плагинов. Менеджер плагинов гидратора настраивается так же, как и менеджер сервисов (вызываемые объекты, фабрики и т. д.), только ключ конфигурации отличается, hydrators вместо service_manager

Вам просто нужно переместить свои заводы с service_manager на hydrators...

'hydrators' => array(
    'factories' => array(
        'My\Hydrators\SomeHydrator' => 'My\Hydrators\SomeHydratorFactory'
    )
),
person Crisp    schedule 27.05.2014