|
|
@ -10,124 +10,12 @@ composer require rinsvent/transformer |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
## Пример |
|
|
|
## Пример |
|
|
|
|
|
|
|
|
|
|
|
### Описания ДТО |
|
|
|
|
|
|
|
```php |
|
|
|
|
|
|
|
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; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
### Использование |
|
|
|
### Использование |
|
|
|
```php |
|
|
|
```php |
|
|
|
use Rinsvent\Transformer\Transformer; |
|
|
|
$t = new Transformer(); |
|
|
|
|
|
|
|
$dt = new \DateTime('2022-04-01'); |
|
|
|
$helloRequest = new HelloRequest; |
|
|
|
$dt->setTime(5, 23, 21); |
|
|
|
$helloRequest->surname = ' asdf'; |
|
|
|
$actual = $t->transform($dt, new Transformer\DateTimeFormat()); |
|
|
|
$helloRequest->age = 3; |
|
|
|
$this->assertEquals('2022-04-01T05:23:21+00:00', $actual); |
|
|
|
$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); |
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
### Результат |
|
|
|
|
|
|
|
```php |
|
|
|
|
|
|
|
$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 |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|