Create New Post

Laravel - Event Handling

In Laravel, event handling is a powerful feature that allows you to decouple various components of your application. Events provide a way to broadcast information about specific occurrences, and listeners respond to these events.

1. Creating Events:

Events in Laravel are classes that represent something that has happened. You can create an event using the make:event Artisan command.

php artisan make:event OrderShipped
 

This will generate an OrderShipped event class in the app/Events directory.

2. Defining Event Data:

You can define data that should be passed along with the event. Edit the generated event class to include the necessary properties.

class OrderShipped
{
    public $order;

    public function __construct(Order $order)
    {
        $this->order = $order;
    }
}
 

3. Creating Listeners:

Listeners are classes that handle events when they are fired. You can generate a listener using the make:listener Artisan command.

 php artisan make:listener SendShipmentNotification

This will generate a SendShipmentNotification listener class in the app/Listeners directory.

4. Handling Events in Listeners:

Edit the generated listener class to define how it should handle the event.

class SendShipmentNotification
{
    public function handle(OrderShipped $event)
    {
        // Access the order from the event
        $order = $event->order;

        // Send a notification or perform other actions
    }
}

5. Registering Event Listeners:

You can register event listeners in the EventServiceProvider class.

protected $listen = [
    OrderShipped::class => [
        SendShipmentNotification::class,
    ],
];

6. Firing Events:

You can fire events using the event helper function.

event(new OrderShipped($order));
 

7. Queueing Events:

You can queue events to handle them asynchronously.

event(new OrderShipped($order));
 

8. Event Subscribers:

Event subscribers provide a way to listen to multiple events in a single class. You can generate an event subscriber using the make:subscriber Artisan command.

php artisan make:subscriber OrderSubscriber
 

9. Defining Subscribed Events:

Edit the generated subscriber class to define the events it should listen to.

 
class OrderSubscriber
{
    protected $events = [
        OrderShipped::class => [
            SendShipmentNotification::class,
        ],
    ];
}

10. Manually Subscribing Listeners:

You can manually subscribe listeners in the EventServiceProvider class.

public function boot()
{
    parent::boot();

    Event::listen(
        OrderShipped::class,
        [SendShipmentNotification::class, 'handle']
    );
}

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

43666