Events & Listeners

Decouple logic with event-driven architecture

Events decouple your code. When something happens, fire an event. Listeners handle the side effects.

A user places an order. This triggers an event.

Controller
OrderController::store()
OrderPlaced
carries Order data
SendConfirmation
UpdateInventory
NotifyWarehouse
PHP
public function store(Request $request) {
    $order = Order::create($request->validated());
    OrderPlaced::dispatch($order);
    return redirect('/orders/' . $order->id);
}