Настроил чтобы сразу передавать объект.
Минус один опциональный параметр
This commit is contained in:
parent
c49bac2315
commit
ba54621a7f
@ -75,6 +75,6 @@ $dto = $data2DtoConverter->convert([
|
|||||||
'barField' => 32
|
'barField' => 32
|
||||||
],
|
],
|
||||||
'extraData1' => 'qwer'
|
'extraData1' => 'qwer'
|
||||||
], HelloRequest::class);
|
], new HelloRequest);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -14,10 +14,9 @@ use function Symfony\Component\String\u;
|
|||||||
|
|
||||||
class Data2DtoConverter
|
class Data2DtoConverter
|
||||||
{
|
{
|
||||||
public function convert(array $data, string $class, array $tags = [], ?object $instance = null): object
|
public function convert(array $data, object $object, array $tags = []): object
|
||||||
{
|
{
|
||||||
$tags = empty($tags) ? ['default'] : $tags;
|
$tags = empty($tags) ? ['default'] : $tags;
|
||||||
$object = $instance ?? new $class;
|
|
||||||
$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)) {
|
||||||
@ -74,9 +73,9 @@ class Data2DtoConverter
|
|||||||
if (class_exists($preparedPropertyType)) {
|
if (class_exists($preparedPropertyType)) {
|
||||||
if ($property->isInitialized($object)) {
|
if ($property->isInitialized($object)) {
|
||||||
$propertyValue = $property->getValue($object);
|
$propertyValue = $property->getValue($object);
|
||||||
$value = $this->convert($value, $preparedPropertyType, $tags, $propertyValue);
|
$value = $this->convert($value, new $preparedPropertyType, $tags, $propertyValue);
|
||||||
} else {
|
} else {
|
||||||
$value = $this->convert($value, $preparedPropertyType, $tags);
|
$value = $this->convert($value, new $preparedPropertyType, $tags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,7 +191,7 @@ class Data2DtoConverter
|
|||||||
}
|
}
|
||||||
$tempValue = [];
|
$tempValue = [];
|
||||||
foreach ($value as $itemValue) {
|
foreach ($value as $itemValue) {
|
||||||
$tempValue[] = $this->convert($itemValue, $attributedPropertyClass, $tags);
|
$tempValue[] = $this->convert($itemValue, new $attributedPropertyClass, $tags);
|
||||||
}
|
}
|
||||||
$value = $tempValue;
|
$value = $tempValue;
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ class FillTest extends \Codeception\Test\Unit
|
|||||||
'barField' => 32
|
'barField' => 32
|
||||||
],
|
],
|
||||||
'extraData1' => 'qwer'
|
'extraData1' => 'qwer'
|
||||||
], HelloRequest::class);
|
], new HelloRequest);
|
||||||
$this->assertInstanceOf(HelloRequest::class, $dto);
|
$this->assertInstanceOf(HelloRequest::class, $dto);
|
||||||
$this->assertEquals('asdf', $dto->surname);
|
$this->assertEquals('asdf', $dto->surname);
|
||||||
$this->assertEquals(3, $dto->age);
|
$this->assertEquals(3, $dto->age);
|
||||||
|
Loading…
Reference in New Issue
Block a user