Laravel покращує управління пайплайнами завдяки запровадженню методу finally, який пропонує елегантніший спосіб обробки операцій після виконання пайплайну, незалежно від результату — успіху чи невдачі
Раніше для управління операціями очищення в пайплайнах Laravel потрібно було обгортати логіку пайплайнів в блоки try-finally. Новий метод finally інтегрує очищення безпосередньо в ланцюг пайплайна, створюючи більш зрозумілий і підтримуваний код:
$result = Pipeline::send($order)
->through([StepOne::class, StepTwo::class])
->finally(fn () => /** виконати очищення */)
->then(fn () => $order->process());
Цей підхід особливо ефективний у складних операціях, де важливо гарантовано здійснити очищення ресурсів:
class OrderProcessor
{
public function process(Order $order)
{
return Pipeline::send($order)
->through([
ValidateInventory::class,
CalculateShipping::class,
ProcessPayment::class,
UpdateInventory::class
])
->finally(function () use ($order) {
// Завжди звільняємо резервування товару
InventoryManager::releaseHolds($order->id);
// Очищаємо блокування процесу
Cache::forget("order-processing:{$order->id}");
// Оновлюємо часову мітку статусу замовлення
$order->update(['processed_at' => now()]);
// Надсилаємо сповіщення незалежно від результату
event(new OrderProcessingCompleted($order));
})
->then(fn () => $this->completeOrder($order));
}
protected function completeOrder(Order $order)
{
return [
'status' => 'processed',
'order_id' => $order->id,
'total' => $order->total
];
}
}
Метод finally має кілька переваг над традиційними блоками try-finally. Він дозволяє зберігати логіку очищення в потоці пайплайна, створюючи більш природний прогрес коду, який легше зрозуміти. Цей підхід є особливо цінним при обробці складних операцій, що вимагають належного управління ресурсами
Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!
Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!
Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом