bluestone / dto
Data transfer objects
v1.1.1
2022-12-07 13:35 UTC
Requires
- php: ^8.1
- bluestone/collection: ^0.1.0
Requires (Dev)
- marcocesarato/php-conventional-changelog: ^1.15
- phpunit/phpunit: ^9.5.10
- squizlabs/php_codesniffer: ^3.7
README
Installation
This package requires php:^8.1
.
You can install it via composer:
composer require bluestone/dto
Usage
This package goal to simplify the build of objects whose serve to pass structured data.
Build simple DTO
An exemple of class extends DTO :
use Bluestone\DataTransferObject\DataTransferObject; class Hooman extends DataTransferObject { public string $name; }
You can instantiate this class like this :
$jane = new Hooman(name: 'Jane'); $john = new Hooman(['name' => 'John']);
Build complex DTO with Casting
An exemple of class with property with casting :
use Bluestone\DataTransferObject\DataTransferObject; use Bluestone\DataTransferObject\Attributes\CastWith; use Bluestone\DataTransferObject\Casters\ArrayCaster; class Hooman extends DataTransferObject { public string $name; #[CastWith(ArrayCaster::class, type: Hooman::class)] public array $children; }
You can instantiate this class like this :
$jane = new Hooman( name: 'Jane', children: [ new Hooman(name: 'Mario'), new Hooman(name: 'Luigi'), ], ); $john = new Hooman([ 'name' => 'John', 'children' => [ ['name' => 'Mario'], ['name' => 'Luigi'], ], ]);
Build complex DTO with Mapping
An exemple of class with property with mapping :
use Bluestone\DataTransferObject\DataTransferObject; use Bluestone\DataTransferObject\Attributes\Map; class Hooman extends DataTransferObject { #[Map('date_of_birth')] public string $bornAt; }
You can instantiate this class like this :
$jane = new Hooman( date_of_birth: '1970-01-01', ); $john = new Hooman([ 'date_of_birth' => '1970-01-01', ]);
Contributing
DTO is an open source project under MIT License and is open for contributions.