Попытка сериализации объекта, которая вызывает некоторые проблемы с циклическими ссылками
class Comment
{
/**
* @var Discussion
*
* @ORM\ManyToOne(targetEntity="App\Entity\Discussion", inversedBy="comments")
* @ORM\JoinColumn(nullable=false)
*/
private $discussion;
}
class Discussion
{
/**
* @var Comment[]|ArrayCollection
*
* @ORM\OneToMany(targetEntity="App\Entity\Comment", mappedBy="discussion")
*/
private $comments;
}
Поскольку я использую компонент Serializer
путем введения SerializerInterface
, я попытался расширить свой framework.yaml
с помощью:
serializer:
circular_reference_handler: App\Utils\CircularReferenceHandler
Где класс обработчика реализует метод __invoke
, который просто возвращает идентификатор объекта:
public function __invoke($object, string $format = null, array $context = [])
{
if (method_exists($object, 'getId')) {
return $object->getId();
}
return '';
}
К сожалению, это не работает, и я получаю бесконечныйцикл (превышающий доступную память).Что я делаю не так?