---
title: "Service Layer - бізнес-логіка в одному місці"
url: https://laravelukraine.com/blog/service-layer-biznes-logika-v-odnomu-misci
author: "Олексій Бабінцев"
date: 2026-08-11
---

# Service Layer - бізнес-логіка в одному місці

Service Layer концентрує бізнес-логіку у виділеному шарі сервісів, лишаючи контролери тонкими.

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

Коли бізнес-правила живуть у контролерах, вони дублюються між HTTP, CLI та чергами, важко тестуються й змішуються з обробкою запиту.

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

Логіка переїжджає в сервіси з виразними методами (`place()`, `cancel()`). Контролер лише приймає запит, делегує сервісу й повертає відповідь. Один сервіс перевикористовується звідусіль.

```php
class OrderService
{
  public function __construct(private OrderRepository $repo) {}

  public function place(array $data): Order
  {
    $order = $this->repo->create($data);
    $this->repo->markStatus($order, 'placed');
    return $order;
  }
}

class OrderController
{
  public function __construct(private OrderService $service) {}

  public function store(): Order
  {
    return $this->service->place(request()->all());
  }
}
```

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

- Правила, що виходять за межі простого CRUD і викликаються з різних точок входу.
- Коли логіку треба перевикористовувати між контролерами, командами та job.

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

- **+** Тонкі контролери; логіка зосереджена в зрозумілому шарі.
- **+** Простіші тести й повторне використання логіки.
- **−** Сервіс може розростися в God Object, якщо тягне все підряд.
- **−** Для тривіального CRUD окремий сервіс - зайва церемонія.
