Go to file
2021-08-09 12:46:44 +07:00
bin/docker Поправил скрипт ci 2021-08-08 15:19:30 +07:00
src Реализовал поддерку интерфейсов. 2021-08-08 14:40:56 +07:00
tests Реализовал поддерку интерфейсов. 2021-08-08 14:40:56 +07:00
.gitignore Первоначальный каркас приложения 2021-08-05 23:33:22 +07:00
.gitlab-ci.yml Первоначальный каркас приложения 2021-08-05 23:33:22 +07:00
codeception.yml Первоначальный каркас приложения 2021-08-05 23:33:22 +07:00
composer.json Добавил трансформеры 2021-08-07 16:58:27 +07:00
composer.lock Добавил трансформеры 2021-08-07 16:58:27 +07:00
docker-compose-ci.yml Первоначальный каркас приложения 2021-08-05 23:33:22 +07:00
docker-compose.yml Первоначальный каркас приложения 2021-08-05 23:33:22 +07:00
Makefile Первоначальный каркас приложения 2021-08-05 23:33:22 +07:00
Readme.md Добавил описание 2021-08-09 12:46:44 +07:00

pipeline status coverage report

Data2dto

Установка

composer require rinsvent-data2dto

Пример

Описания ДТО

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

interface BarInterface
{

}

class Bar implements BarInterface
{
    public float $barField;
}

class HelloRequest
{
    #[Trim]
    public string $surname;
    #[PropertyPath('fake_age')]
    public int $age;
    public array $emails;
    #[DTOMeta(class: Author::class)]
    public array $authors;
    public BuyRequest $buy;
    #[DTOMeta(class: Bar::class)]
    public BarInterface $bar;
}

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

use Rinsvent\Data2DTO\Data2DtoConverter;

$data2DtoConverter = new Data2DtoConverter();
        $dto = $data2DtoConverter->convert([
            'surname' => '   asdf',
            'fake_age' => 3,
            'emails' => [
                'sfdgsa',
                'af234f',
                'asdf33333'
            ],
            'authors' => [
                [
                    'name' => 'Tolkien',
                ],
                [
                    'name' => 'Sapkovsky'
                ]
            ],
            'buy' => [
                'phrase' => 'Buy buy!!!',
                'length' => 10,
                'isFirst' => true,
                'extraData2' => '1234'
            ],
            'bar' => [
                'barField' => 32
            ],
            'extraData1' => 'qwer'
        ], HelloRequest::class);