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

Зміст
Що таке Laravel Pipeline і як він працює? #
Pipeline – це реалізація патерну “Конвеєр” (Pipeline Pattern), який дозволяє передавати об’єкт через послідовність обробників, кожен з яких виконує одну конкретну задачу. Це чудовий спосіб організувати код за принципом Single Responsibility Principle (SRP), який є частиною SOLID.
Основні можливості Pipeline #
Pipeline особливо корисний у таких випадках:
- Трансформація об’єктів – коли потрібно послідовно застосувати різні обробники до об’єкта, змінюючи або доповнюючи його дані.
- Обробка моделі перед збереженням або після оновлення – коли є кілька незалежних процесів, які слід виконати, наприклад, створення зв’язків, відправка повідомлень або інтеграція зі сторонніми сервісами.
Приклад використання 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? #
- Чистий і зрозумілий код – кожен процес виділений в окремий клас.
- Гнучкість – можна легко додавати або прибирати обробники.
- Повторне використання – ті самі класи можна використовувати в різних частинах застосунку.
Додаткові ресурси #
🔗 Laravel Pipeline Documentation
Висновок #
Якщо потрібно обробляти дані послідовно, Pipeline – це чудовий спосіб зробити це ефективно та красиво. Тепер, коли цей інструмент доступний офіційно в Laravel 10, його використання стало ще простішим.