#php #symfony #serialization #deserialization
Вопрос:
Я работаю над проектом, использующим Symfony с ApiPlatform и MongoDB. В моем поставщике данных я получаю данные обратно от построителя агрегации, который возвращает объект класса «ApiPlatformCoreBridgeDoctrineMongoDbOdmPaginator». Мне нужно сериализовать данные для хранения в кэше Redis и десериализовать их при извлечении из кэша. Я могу сериализовать его просто отлично и увидеть в кэше, но когда я пытаюсь десериализовать его, я получаю следующую ошибку.
Невозможно создать экземпляр «ApiPlatformCoreBridgeDoctrineMongoDbOdmPaginator» из сериализованных данных, поскольку для его конструктора требуется наличие параметра «mongoDbOdmIterator».
Какие-либо указания о том, как передать mongoDbOdmIterator конструктору, или какой-либо лучший способ сериализации/десериализации этого объекта? Код ниже:
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$data = $this->getCollectionResults($aggregationBuilder, $resourceClass, $operationName, $context);
$serialized = $this->serializer->serialize($data, 'json');
...
$data = $this->serializer->deserialize($serialized, 'ApiPlatformCoreBridgeDoctrineMongoDbOdmPaginator', 'json');
Комментарии:
1. вы пробовали конструктор по умолчанию, как указано здесь ?
2. Пробовал, но не могу понять, как заставить mongoDbOdmIterator перейти к конструктору. Не позволяет мне создать экземпляр нового итератора() и не может найти никакого метода для получения итератора.