Symfony 4.1.6, Обнаружена циклическая ссылка при сериализации объекта класса

При сериализации объекта, имеющего отношения к другому объекту.

A circular reference has been detected when serializing the object of class бывает, если не выставить setCircularReferenceLimit и setCircularReferenceHandler.

Проблема была решена до symfony3.2, но теперь происходит Symofony4.1.6, Error: Maximum execution time of 30 seconds exceeded и тайм-аут.

Где проверить ????

$encoders = array(new XmlEncoder(), new JsonEncoder());
$norm = new ObjectNormalizer();

//// it fixes the problem before Symfony 3.2, but no it causes timeout
$norm->setCircularReferenceLimit(0);
$norm->setCircularReferenceHandler(function ($object) {
     return $object->getId();
});
//////////

$normalizers = array($norm);
$serializer = new Serializer($normalizers, $encoders);

/// get entity from doctorine2//
$myEntity = .... 

$jsonContent = $serializer->serialize($myEntity, 'json');

моя ошибка

in vendor/symfony/property-access/PropertyAccessor.php (line 372)

    $result = self::$resultProto;        
    $object = $zval[self::VALUE];        
    $access = $this->getReadAccessInfo(\get_class($object), $property); 

    if (self::ACCESS_TYPE_METHOD === $access[self::ACCESS_TYPE]) {            
    $result[self::VALUE] = $object->{$access[self::ACCESS_NAME]}();
    } elseif (self::ACCESS_TYPE_PROPERTY === $access[self::ACCESS_TYPE]) {            
        $result[self::VALUE] = $object->{$access[self::ACCESS_NAME]};


    if ($access[self::ACCESS_REF] && isset($zval[self::REF])) {                
    $result[self::REF] = &$object->{$access[self::ACCESS_NAME]};

Вам не нужно вставлять фрагмент для Property Accessor, но не могли бы вы показать свой объект, который хотите сериализовать? Достаточно показать круговую биту. Это поможет нам воспроизвести проблему и исследовать проблему.

dbrumann 31.10.2018 08:25

Эй, ты сделал это?

Jalil 05.06.2019 16:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
2
1 582
0

Другие вопросы по теме