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.
|
|
|
[![pipeline status](https://git.rinsvent.ru/rinsvent/data2dto/badges/master/pipeline.svg)](https://git.rinsvent.ru/rinsvent/data2dto/-/commits/master)
|
|
|
|
[![coverage report](https://git.rinsvent.ru/rinsvent/data2dto/badges/master/coverage.svg)](https://git.rinsvent.ru/rinsvent/data2dto/-/commits/master)
|
|
|
|
|
|
|
|
Data2dto
|
|
|
|
===
|
|
|
|
|
|
|
|
## Установка
|
|
|
|
```php
|
|
|
|
composer require rinsvent/data2dto
|
|
|
|
```
|
|
|
|
|
|
|
|
## Пример
|
|
|
|
|
|
|
|
### Описания ДТО
|
|
|
|
```php
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
```
|
|
|
|
### Использование
|
|
|
|
```php
|
|
|
|
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'
|
|
|
|
], new HelloRequest);
|
|
|
|
```
|
|
|
|
|