---
title: "DTO - передача даних без логіки"
url: https://laravelukraine.com/blog/dto-peredaca-danix-bez-logiki
date: 2026-08-18
---

# DTO - передача даних без логіки

DTO (Data Transfer Object) - простий об'єкт для перенесення структурованих даних між шарами без поведінки.

### Яку проблему вирішує

Передача даних асоціативними масивами хитка: ключі - "магічні рядки", структура ніде не зафіксована, IDE не підказує, а помилку в назві поля видно лише в рантаймі.

### Як вирішує

Дані описуються типізованим об'єктом із явними полями. Сигнатури методів стають самодокументованими, а опечатки ловляться ще до запуску.

```php
class CreateUserData
{
  public function __construct(
    public string $name,
    public string $email,
  ) {}
}

class UserService
{
  public function create(CreateUserData $data): User
  {
    return User::create([
      'name' => $data->name,
      'email' => $data->email,
    ]);
  }
}
```

### Де застосовувати

- Передача даних у сервіси, команди, job та інтеграції.
- Скрізь, де хочеться типізованого контракту замість "сирого" масиву.

### Плюси та мінуси

- **+** Явна структура й типи; менше помилок із ключами масивів.
- **+** Зменшує зв'язність між шарами.
- **−** Трохи додаткового коду на мапінг даних у DTO.
- **−** DTO має лишатися без бізнес-логіки: валідація може бути поруч, але правила - у сервісах.
