Modelul Event-Driven permite decuplarea modulelor: la finalizarea unei comenzi, controllerul emite doar OrderPlaced::dispatch($order) fără a ști ce alte acțiuni urmează a fi executate.
Ascultătorii (Listeners) pot fi atașați independent (generare factură PDF, trimitere SMS, actualizare inventar). Mai mult, dacă un Listener implementează ShouldQueue, acesta va fi executat asincron în coadă fără a întârzia răspunsul HTTP către client.
Exemplu: Eveniment și Listener asincron în Laravel
// app/Events/OrderPlaced.php
namespace App\Events;
use App\Models\Order;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class OrderPlaced
{
use Dispatchable, SerializesModels;
public function __construct(public Order $order) {}
}
// app/Listeners/SendOrderEmail.php
namespace App\Listeners;
use App\Events\OrderPlaced;
use Illuminate\Contracts\Queue\ShouldQueue;
class SendOrderEmail implements ShouldQueue
{
public function handle(OrderPlaced $event): void
{
// Trimite email în fundal pe coadă:
// Mail::to($event->order->user)->send(new OrderConfirmation($event->order));
}
}
Întrebări & Exemple de Cod:
Sistemul de Evenimente și Ascultători (Events & Listeners)Ai o nelămurire despre utilizarea comenzii
Sistemul de Evenimente și Ascultători (Events & Listeners)sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.