How-to-Handle-Multiple-Events-with-a-Single-Listener-in-Laravel
佛是过来人,人是未来佛,我也曾如你般天真。
Laravel provides a simple way to declare event listeners out of the box via the EventServiceProvider
class.
Here’s a quick example:
1 |
|
With the above, anytime the LoginEvent is fired, the handle()
method of the HandleLoginListener class will be called. Pretty simple, right?
But what if you have dozens or even hundreds of events that you want to all go through the same handler?
One option would be to list them out individually in the EventServiceProvider
class.
Yikes! What if you forget to add the listener when you add a new event?
Another option would be to listen to an interface
, and have your events implement the interface.
Here’s an example interface:
1 | // App\Events\NotifiableEvent.php |
And here’s an example event, that implements the interface:
1 | // App\Events\CreatedApplicationMember.php |
Then in EventServiceProvider
, you can listen for the interface instead of the specific event classes:
1 |
|
Now anytime an event that implements the NotifiableEvent
interface is dispatched, the SendEventNotification
listener will be called.
https://owenconti.com/posts/how-to-handle-multiple-events-with-a-single-listener-in-laravel