Swiftorial Logo
Home
Swift Lessons
Tutorials
Learn More
Career
Resources

Event Listeners in Laravel

Introduction

In Laravel, event listeners are part of the powerful event broadcasting system. They allow you to execute specific actions in response to events that occur in your application. This helps you adhere to the principles of decoupling and separation of concerns in your code.

What are Events?

An event is an occurrence in your application that you can attach listeners to. For example, when a user registers, you might want to send a welcome email. The registration process can be considered an event, and the email sending can be the listener that responds to this event.

Creating an Event

To create an event in Laravel, you can use the Artisan command line tool. For example, to create a new event called UserRegistered, you can run the following command:

php artisan make:event UserRegistered

This command will create a new event class in the app/Events directory. Open the newly created event file and you can add any properties or methods that you need.

Creating a Listener

Similar to events, you can create a listener that handles the event. For the UserRegistered event, you might want to create a listener called SendWelcomeEmail. Run the following command:

php artisan make:listener SendWelcomeEmail

This will create a new listener class in the app/Listeners directory. You can implement the handle method within this class to specify what should happen when the event is fired.

Registering Events and Listeners

To link your event and listener, you need to register them in the EventServiceProvider. Open the app/Providers/EventServiceProvider.php file and add your event-listener pair in the $listen property:

protected $listen = [
    UserRegistered::class => [
        SendWelcomeEmail::class,
    ],
];
                

This tells Laravel to call SendWelcomeEmail whenever the UserRegistered event is fired.

Firing Events

To fire an event, you can use the event helper function. For example, after a user registers, you might fire the UserRegistered event as follows:

event(new UserRegistered($user));
                

This will trigger the SendWelcomeEmail listener, which can then execute the logic to send a welcome email to the user.

Conclusion

Event listeners in Laravel provide a straightforward way to handle events within your application. By decoupling the trigger of an event from the logic that handles it, you can create a more maintainable and organized codebase. This tutorial covered the basics of creating events and listeners, registering them, and firing events.