Доработал логику обработки виртуальных полей
This commit is contained in:
parent
ba54621a7f
commit
f27e92544f
@ -18,6 +18,8 @@ class Data2DtoConverter
|
|||||||
{
|
{
|
||||||
$tags = empty($tags) ? ['default'] : $tags;
|
$tags = empty($tags) ? ['default'] : $tags;
|
||||||
$reflectionObject = new \ReflectionObject($object);
|
$reflectionObject = new \ReflectionObject($object);
|
||||||
|
|
||||||
|
// Трнансформируем на уровне класса
|
||||||
$this->processClassTransformers($reflectionObject, $data, $tags);
|
$this->processClassTransformers($reflectionObject, $data, $tags);
|
||||||
if (is_object($data)) {
|
if (is_object($data)) {
|
||||||
return $data;
|
return $data;
|
||||||
@ -33,9 +35,15 @@ class Data2DtoConverter
|
|||||||
// Для виртуальных полей добавляем пустой масиив, чтобы заполнить поля дто
|
// Для виртуальных полей добавляем пустой масиив, чтобы заполнить поля дто
|
||||||
$propertyExtractor = new PropertyExtractor($property->class, $property->getName());
|
$propertyExtractor = new PropertyExtractor($property->class, $property->getName());
|
||||||
if ($propertyExtractor->fetch(VirtualProperty::class)) {
|
if ($propertyExtractor->fetch(VirtualProperty::class)) {
|
||||||
if (!array_key_exists($property->getName(), $data)) {
|
if ($property->isInitialized($object)) {
|
||||||
$data[$property->getName()] = [];
|
$propertyValue = $property->getValue($object);
|
||||||
|
$value = $this->convert($data, $propertyValue, $tags);
|
||||||
|
} else {
|
||||||
|
$value = $this->convert($data, new $propertyType, $tags);
|
||||||
}
|
}
|
||||||
|
// присваиваем получившееся значение
|
||||||
|
$property->setValue($object, $value);
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($dataPath = $this->grabDataPath($property, $data, $tags)) {
|
if ($dataPath = $this->grabDataPath($property, $data, $tags)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user