Что такое DTO (Data Transfer Object)?

Ответ

DTO - объект для передачи данных между слоями приложения без бизнес-логики:

readonly class CreateUserDTO {
    public function __construct(
        public string $name,
        public string $email,
        public int $age,
    ) {}

    public static function fromRequest(Request $request): self {
        return new self(
            name: $request->input('name'),
            email: $request->input('email'),
            age: (int) $request->input('age'),
        );
    }
}

// Использование
class UserService {
    public function create(CreateUserDTO $dto): User {
        return $this->repo->create($dto->name, $dto->email, $dto->age);
    }
}

DTO отличается от Entity (нет бизнес-логики, нет identity) и от Value Object (не обязан быть иммутабельным, нет поведения).

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.