rinsvent / dto2data
Convert data to dto object
v0.0.11
2022-04-02 07:00 UTC
Requires
- php: ^8.0
- ext-ctype: *
- ext-iconv: *
- ext-json: *
- rinsvent/attribute-extractor: ^0.0
- rinsvent/transformer: ^0.0
- symfony/property-access: ^5.4|^6.0
- symfony/string: ^5.3
Requires (Dev)
- codeception/codeception: ^4.1
- codeception/module-asserts: ^1.0.0
- codeception/module-phpbrowser: ^1.0.0
README
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 ] ]