Пакет сериализатора Jms - Сериализация абстрактного родительского элемента с дочерним типом - PullRequest
0 голосов
/ 11 ноября 2019

Проблема, с которой я сталкиваюсь, заключается в том, что при десериализации объекта, который наследует значения свойств от родителей, он возвращается в виде многомерного массива, когда он должен быть массивом объектов, определяемых дочерним объектом.

Итак, у меня есть собственный класс абстрактной коллекции, у которого есть одно свойство с именем 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;

}
...