/d2-dto

Primary LanguagePHPMIT LicenseMIT

Build Status codecov

d2 dto

This is a simple base class of data transfer object. The class constructor casts primitives into value objects.

class CreateBookCommand extends Dto
{
    private BookName $name;
    private AuthorId $author_id;
}

$command = new CreateBookCommand([
    'name' => 'Анна Каренина',
    'author_id' => 10,
]);

$command = new CreateBookCommand([
    'name' => 'Анна Каренина',
], \D2\Dto::PARTIAL);

Example of usage with partial data load.

class UpdateBookCommand extends Dto
{
    private BookName $name;
    private AuthorId $author_id;
}

$command = UpdateBookCommand::partial([
    'name' => 'Анна Каренина',
]);

if ($command->has('name')) {
    $book->rename($command->name);
}