Почему перестал работать гидратор после миграции zf2-›zf3?

Я не могу понять, почему перестал работать AggregateHydrator, если вы получаете его в фабрике маппера:

$aggregatehydrator = $container->get(AggregateHydrator::class);

Возвращаются пустые объекты. Я пытался отладить, и PHP умирает (лишняя память), когда я пытаюсь:

\Zend\debug\debug::dump($aggregatehydrator);

Если я получу гидратор другим способом:

$tagsHydrator = $container->get(TagsHydrator::class);
$categoryHydrator = $container->get(CategoryHydrator::class);
$postHydrator = $container->get(PostHydrator::class);
$datesHydrator = $container->get(DatesHydrator::class);
$aggregatehydrator = new     \Zend\Hydrator\Aggregate\AggregateHydrator();
$aggregatehydrator->add($postHydrator);
$aggregatehydrator->add($categoryHydrator);
$aggregatehydrator->add($tagsHydrator);
$aggregatehydrator->add($datesHydrator);

все работает. Заполненные объекты возвращаются.

https://bitbucket.org/mad-max/blog-note3/overview

class AggregateHydratorFactory implements FactoryInterface
{
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
    {
        $aggregatehydrator = new AggregateHydrator();

        $tagsHydrator = $container->get(TagsHydrator::class);
        $categoryHydrator = $container->get(CategoryHydrator::class);
        $postHydrator = $container->get(PostHydrator::class);
        $datesHydrator = $container->get(DatesHydrator::class);


        $aggregatehydrator->add($postHydrator);
        $aggregatehydrator->add($categoryHydrator);
        $aggregatehydrator->add($tagsHydrator);
        $aggregatehydrator->add($datesHydrator);

        return $aggregatehydrator;
    }
}

person Max Maximiv    schedule 15.02.2017    source источник
comment
Вы должны добавить код для фабрики AggregateHydrator.   -  person AlexP    schedule 15.02.2017
comment
Итак, проблема в том, что вашему серверу не хватает памяти при выполнении \Zend\debug\debug::dump($aggregatehydrator);. Может быть, тогда не стоит этого делать? Почему вы вообще сбрасываете инстанс гидратора?   -  person Wilt    schedule 15.02.2017
comment
Потому что я пытался отладить, чтобы понять, почему это не сработало. Эта строка отсутствует в реале.   -  person Max Maximiv    schedule 16.02.2017


Ответы (1)


Я добавил в AggregateHydratorFactory:

    $aggregatehydrator = new AggregateHydrator();
    $aggregatehydrator->setEventManager($container->get('EventManager'));

Ответ здесь: https://github.com/zendframework/zend-hydrator/issues /40

person Max Maximiv    schedule 01.03.2017