До тексту

Laravel Pipeline: Потужний інструмент для керування потоками даних

·2 хвилини

Що таке Laravel Pipeline і як він працює? #

Pipeline – це реалізація патерну “Конвеєр” (Pipeline Pattern), який дозволяє передавати об’єкт через послідовність обробників, кожен з яких виконує одну конкретну задачу. Це чудовий спосіб організувати код за принципом Single Responsibility Principle (SRP), який є частиною SOLID.

Основні можливості Pipeline #

Pipeline особливо корисний у таких випадках:

  1. Трансформація об’єктів – коли потрібно послідовно застосувати різні обробники до об’єкта, змінюючи або доповнюючи його дані.
  2. Обробка моделі перед збереженням або після оновлення – коли є кілька незалежних процесів, які слід виконати, наприклад, створення зв’язків, відправка повідомлень або інтеграція зі сторонніми сервісами.

Приклад використання Laravel Pipeline #

Розглянемо ситуацію, коли після створення користувача потрібно:

  • Згенерувати йому аватар;
  • Активувати підписку;
  • Відправити привітальний email.

Замість створення складної логіки в одному місці, можна використовувати Pipeline:

use Illuminate\Pipeline\Pipeline;

$user = Pipeline::send($user)
            ->through([
                GenerateProfilePhoto::class,
                ActivateSubscription::class,
                SendWelcomeEmail::class,
            ])
            ->then(fn (User $user) => $user);

Кожен обробник буде окремим класом, який виглядатиме приблизно так:

class GenerateProfilePhoto {
    public function handle(User $user, Closure $next) {
        // Генеруємо фото профілю
        $user->profile_photo = 'default.png';

        return $next($user);
    }
}

Ключовий момент: кожен клас приймає об’єкт $user, виконує свою логіку та передає його далі через $next($user). Це схоже на Middleware, але використовується не тільки в HTTP-запитах, а в будь-якій бізнес-логіці.

Чому варто використовувати Pipeline? #

  1. Чистий і зрозумілий код – кожен процес виділений в окремий клас.
  2. Гнучкість – можна легко додавати або прибирати обробники.
  3. Повторне використання – ті самі класи можна використовувати в різних частинах застосунку.

Додаткові ресурси #

🔗 Laravel Pipeline Documentation

Висновок #

Якщо потрібно обробляти дані послідовно, Pipeline – це чудовий спосіб зробити це ефективно та красиво. Тепер, коли цей інструмент доступний офіційно в Laravel 10, його використання стало ще простішим.