Проинтегрировал виртуальное поле
Чтобы можно было заполнить дто, когда нет такого ключа в данных.
This commit is contained in:
parent
2e689c826d
commit
e479206af0
12
src/Attribute/VirtualProperty.php
Normal file
12
src/Attribute/VirtualProperty.php
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Rinsvent\Data2DTO\Attribute;
|
||||||
|
|
||||||
|
#[\Attribute]
|
||||||
|
class VirtualProperty
|
||||||
|
{
|
||||||
|
public function __construct(
|
||||||
|
/** @var string[] $tags */
|
||||||
|
public array $tags = ['default']
|
||||||
|
) {}
|
||||||
|
}
|
@ -6,6 +6,7 @@ use Rinsvent\AttributeExtractor\ClassExtractor;
|
|||||||
use Rinsvent\AttributeExtractor\PropertyExtractor;
|
use Rinsvent\AttributeExtractor\PropertyExtractor;
|
||||||
use Rinsvent\Data2DTO\Attribute\DTOMeta;
|
use Rinsvent\Data2DTO\Attribute\DTOMeta;
|
||||||
use Rinsvent\Data2DTO\Attribute\PropertyPath;
|
use Rinsvent\Data2DTO\Attribute\PropertyPath;
|
||||||
|
use Rinsvent\Data2DTO\Attribute\VirtualProperty;
|
||||||
use Rinsvent\Data2DTO\Resolver\TransformerResolverStorage;
|
use Rinsvent\Data2DTO\Resolver\TransformerResolverStorage;
|
||||||
use Rinsvent\Data2DTO\Transformer\Meta;
|
use Rinsvent\Data2DTO\Transformer\Meta;
|
||||||
use Rinsvent\Data2DTO\Transformer\TransformerInterface;
|
use Rinsvent\Data2DTO\Transformer\TransformerInterface;
|
||||||
@ -30,6 +31,14 @@ class Data2DtoConverter
|
|||||||
$reflectionPropertyType = $property->getType();
|
$reflectionPropertyType = $property->getType();
|
||||||
$propertyType = $reflectionPropertyType->getName();
|
$propertyType = $reflectionPropertyType->getName();
|
||||||
|
|
||||||
|
// Для виртуальных полей добавляем пустой масиив, чтобы заполнить поля дто
|
||||||
|
$propertyExtractor = new PropertyExtractor($property->class, $property->getName());
|
||||||
|
if ($propertyExtractor->fetch(VirtualProperty::class)) {
|
||||||
|
if (!array_key_exists($property->getName(), $data)) {
|
||||||
|
$data[$property->getName()] = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($dataPath = $this->grabDataPath($property, $data, $tags)) {
|
if ($dataPath = $this->grabDataPath($property, $data, $tags)) {
|
||||||
$value = $data[$dataPath];
|
$value = $data[$dataPath];
|
||||||
// Трансформируем данные
|
// Трансформируем данные
|
||||||
|
Loading…
Reference in New Issue
Block a user