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
# Основні функції
- Глибоке вкладене перетворення та кастинг
- Конвертація даних з урахуванням типу
- Валідація за допомогою валідатора Laravel
- Casts перетворюють значення в інші DTO, колекції, дати, масиви тощо
- Явна пріоритезація атрибутів
- Чиста серіалізація (toArray, toJson)
- Забезпечення послідовної структури даних на межах застосунків
Дізнайтеся більше про цей пакет, отримайте повні інструкції з встановлення та перегляньте код джерела на GitHub