From ba54621a7f65b136b265563be64558c8ccce0bc2 Mon Sep 17 00:00:00 2001 From: Sipachev Igor Date: Mon, 16 Aug 2021 18:43:37 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=87=D1=82=D0=BE=D0=B1=D1=8B=20=D1=81=D1=80=D0=B0?= =?UTF-8?q?=D0=B7=D1=83=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82.=20=D0=9C?= =?UTF-8?q?=D0=B8=D0=BD=D1=83=D1=81=20=D0=BE=D0=B4=D0=B8=D0=BD=20=D0=BE?= =?UTF-8?q?=D0=BF=D1=86=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Readme.md | 2 +- src/Data2DtoConverter.php | 11 +++++------ tests/unit/Converter/FillTest.php | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Readme.md b/Readme.md index d45dba0..94d2032 100644 --- a/Readme.md +++ b/Readme.md @@ -75,6 +75,6 @@ $dto = $data2DtoConverter->convert([ 'barField' => 32 ], 'extraData1' => 'qwer' -], HelloRequest::class); +], new HelloRequest); ``` diff --git a/src/Data2DtoConverter.php b/src/Data2DtoConverter.php index 8d61280..c01ea39 100644 --- a/src/Data2DtoConverter.php +++ b/src/Data2DtoConverter.php @@ -14,10 +14,9 @@ use function Symfony\Component\String\u; 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; - $object = $instance ?? new $class; $reflectionObject = new \ReflectionObject($object); $this->processClassTransformers($reflectionObject, $data, $tags); if (is_object($data)) { @@ -74,9 +73,9 @@ class Data2DtoConverter if (class_exists($preparedPropertyType)) { if ($property->isInitialized($object)) { $propertyValue = $property->getValue($object); - $value = $this->convert($value, $preparedPropertyType, $tags, $propertyValue); + $value = $this->convert($value, new $preparedPropertyType, $tags, $propertyValue); } else { - $value = $this->convert($value, $preparedPropertyType, $tags); + $value = $this->convert($value, new $preparedPropertyType, $tags); } } @@ -192,7 +191,7 @@ class Data2DtoConverter } $tempValue = []; foreach ($value as $itemValue) { - $tempValue[] = $this->convert($itemValue, $attributedPropertyClass, $tags); + $tempValue[] = $this->convert($itemValue, new $attributedPropertyClass, $tags); } $value = $tempValue; } @@ -210,4 +209,4 @@ class Data2DtoConverter } return $attributedPropertyClass; } -} \ No newline at end of file +} diff --git a/tests/unit/Converter/FillTest.php b/tests/unit/Converter/FillTest.php index cc939c1..4194ec4 100644 --- a/tests/unit/Converter/FillTest.php +++ b/tests/unit/Converter/FillTest.php @@ -52,7 +52,7 @@ class FillTest extends \Codeception\Test\Unit 'barField' => 32 ], 'extraData1' => 'qwer' - ], HelloRequest::class); + ], new HelloRequest); $this->assertInstanceOf(HelloRequest::class, $dto); $this->assertEquals('asdf', $dto->surname); $this->assertEquals(3, $dto->age);