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 28c4b91802 добавил симлинк на codecept 3 years ago
bin добавил симлинк на codecept 3 years ago
src поправил косяки 3 years ago
tests поправил косяки 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

Transformer

Установка

composer require rinsvent/transformer

Пример

Описания ДТО

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\Transformer\Transformer;

$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;

$transformer = new Transformer();
$dto = $transformer->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
    ]
]