Argonaut DTO для Laravel — це легкий пакет Data Transfer Object (DTO), який підтримує вкладене перетворення, рекурсивну серіалізацію та валідацію з коробки. Він ідеально підходить для сервісних шарів, API і архітектурних робочих процесів:
class UserDTO extends ArgonautDTO
{
public string $username;
public string $email;
protected array $casts = [
'username' => 'string',
'email' => 'string',
];
public function rules(): array
{
return [
'username' => ['required', 'string'],
'email' => ['required', 'email'],
];
}
}
Завдяки класам assembler пакета ви можете перетворювати сирі дані, такі як об’єкти або масиви, у DTO:
class UserDTOAssembler extends ArgonautAssembler
{
public static function toUserDTO(object $input): UserDTO
{
return new UserDTO([
'username' => $input->display_name,
'email' => $input->email,
]);
}
}
// Використання assembler'а
$user = UserDTOAssembler::assemble([
'display_name' => 'jdoe',
'email' => 'jdoe@example.com',
], UserDTO::class);
// Використання методу `fromArray`:
$user = UserDTOAssembler::fromArray($userData, UserDTO::class);
Після складання DTO ви можете валідувати об’єкт:
$user->validate(); // Викликає ValidationException
$user->validate(throw: false); // Повертає масив помилок
$user->isValid(); // true/false
Дізнайтеся більше про цей пакет, отримайте повні інструкції з встановлення та перегляньте код джерела на GitHub