You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Rinsvent 88303bb058 Добавил поддержку iterable 3 years ago
bin/docker Первоначальная заготовка для экспорера в массив 3 years ago
src Добавил поддержку iterable 3 years ago
tests Добавил поддержку Traversable 3 years ago
.gitignore Первоначальная заготовка для экспорера в массив 3 years ago
.gitlab-ci.yml Первоначальная заготовка для экспорера в массив 3 years ago
Makefile Первоначальная заготовка для экспорера в массив 3 years ago
Readme.md Поправил описание 3 years ago
codeception.yml Первоначальная заготовка для экспорера в массив 3 years ago
composer.json Первоначальная заготовка для экспорера в массив 3 years ago
docker-compose-ci.yml Первоначальная заготовка для экспорера в массив 3 years ago
docker-compose.yml Первоначальная заготовка для экспорера в массив 3 years ago

Readme.md

pipeline status coverage report

Dto2data

Установка

composer require rinsvent/dto2data

Пример

Описания ДТО

class BuyRequest
{
    public string $phrase;
    public int $length;
    public bool $isFirst;
}

interface BarInterface
{

}

class Bar implements BarInterface
{
    public float $barField;
}

#[HelloSchema]
class HelloRequest
{
    #[Trim]
    public string $surname;
    #[DataPath('fake_age')]
    public int $age;
    public array $emails;
    public array $authors;
    public array $authors2;
    public array $authors3;
    public BuyRequest $buy;
    public BarInterface $bar;
}

Использование

use Rinsvent\DTO2Data\Dto2DataConverter;

$helloRequest = new HelloRequest;
$helloRequest->surname = '   asdf';
$helloRequest->age = 3;
$helloRequest->emails =[
    'sfdgsa',
    'af234f',
    'asdf33333'
];
$author1 = new Author();
$author1->name = 'Tolkien';
$author2 = new Author();
$author2->name = 'Sapkovsky';
$helloRequest->authors = [
    $author1,
    $author2
];
$helloRequest->authors2 = [
    [
        "name" => "Tolkien"
    ],
    [
        "name" => "Sapkovsky"
    ]
];
$helloRequest->authors3 = [
    [
        "name" => "Tolkien"
    ],
    [
        "name" => "Sapkovsky"
    ]
];
$buy = new BuyRequest();
$buy->phrase = 'Buy buy!!!';
$buy->length = 10;
$buy->isFirst = true;
$helloRequest->buy = $buy;
$bar = new Bar();
$bar->barField = 32;
$helloRequest->bar = $bar;

$dto2DataConverter = new Dto2DataConverter();
$dto = $dto2DataConverter->convert($helloRequest);

Результат

$dto = [
    "surname" => "asdf",
    "fake_age" => 3,
    "emails" => [
        "sfdgsa",
        "af234f",
        "asdf33333"
    ],
    "authors" => [
        [
            "name" => "Tolkien"
        ],
        [
            "name" => "Sapkovsky"
        ]
    ],
    "authors2" => [
        [
            "name" => "Tolkien"
        ],
        [
            "name" => "Sapkovsky"
        ]
    ],
    "authors3" => [],
    "buy" => [
        "phrase" => "Buy buy!!!",
        "length" => 10,
        "isFirst" => true
    ],
    "bar" => [
        "barField" => 32
    ]
]