Проблема, с которой я сталкиваюсь, заключается в том, что при десериализации объекта, который наследует значения свойств от родителей, он возвращается в виде многомерного массива, когда он должен быть массивом объектов, определяемых дочерним объектом.
Итак, у меня есть собственный класс абстрактной коллекции, у которого есть одно свойство с именем values. Дочерний класс инициирует тип значений, вызывая абстрактный метод getType, который возвращает тип объекта для коллекции.
Моя конфигурация YAML
Коллекция:
exclusion_policy: NONE
properties:
values:
type: array
PersonCollection:
exclusion_policy: NONE
properties:
values:
type: array<Person>
Person:
exclusion_policy: NONE
properties:
name:
type: string
Когда коллекция десериализуется, она возвращается в виде многомерного массива, а не коллекции объекта Person со значениями свойств.
Collection.php
abstract class Collection {
protected $values;
public function __construct(){
$this->values = [];
}
abstract static public function getType();
}
PersonCollection.php
class PersonCollection extends Collection {
public static function getType(){
return 'Person'; // this is an entity
}
}
Person.php
class Person {
private $name;
}