DTO là value object đơn giản đóng gói dữ liệu request/response, không chứa business logic, và đảm bảo type safety:
php
class CreateUserDTO {
public function __construct(
public string $name,
public string $email,
public int $age,
) {}
}
// PHP 8.2+ — readonly cho DTO bất biến, an toàn hơn
readonly class CreateUserDTO { /* ... */ }Lợi ích: type hint rõ ràng thay vì bóc array mù mờ, bắt lỗi kiểu sớm, tự tài liệu hoá tham số mong đợi, IDE autocomplete đầy đủ và refactor qua nhiều controller/service dễ hơn hẳn.
Phân biệt với Eloquent model: model là entity của DB kèm logic ORM, còn DTO chỉ là object chứa dữ liệu có kiểu.