При сериализации объекта, имеющего отношения к другому объекту.
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, но не могли бы вы показать свой объект, который хотите сериализовать? Достаточно показать круговую биту. Это поможет нам воспроизвести проблему и исследовать проблему.