Laravel’s Event Service Discovery vs. the Old-School Way: My Dilemma

Infinitypaul
2 min readMar 14, 2025

Photo by Mohammad Rahmani on Unsplash

As a Laravel developer, I’m always excited about their new releases, but sometimes change can be confusing. Laravel 5.8 introduced a new way to connect events and listeners without editing the EventServiceProvider file. But I’m stuck between loving the simplicity and missing the old method. Let me explain why

In new Laravel, you don’t have to tell the app which listeners go with which events anymore. Just write your event and listener classes, and Laravel figures it out automatically. For example:

class SendOrderConfirmationListener
{
// Laravel sees this and connects it to OrderPlacedEvent!
public function handle(OrderPlacedEvent $event)
{
}
}

Why It’s Cool:

  • No Repetitive Work: No more updating a long list in the settings file.
  • Cleaner Code: Big projects stay organized because there’s no giant list to manage.
  • Feels Smart: It’s like Laravel reads your mind!

Why It’s Confusing:

  • “Where Are My Listeners?!” If an event has 5 listeners, how do I find them? I end up searching the whole project.
  • No Quick Map: Before, I could open one file and see everything. Now, I have to hunt.

Before Laravel 5.8, we listed every event and its listeners in a file called EventServiceProvider. It looked like this:

protected $listen = [
OrderPlacedEvent::class => [
SendOrderConfirmationListener::class,
UpdateInventoryListener::class,
],
];

Why I Miss It:

  • Everything in One Place: Like a phone contact list, you see all listeners for an event instantly.
  • Easy for Teams: New developers know where to look. No surprises.
  • No Guesswork: If something breaks, you check the list first.

Why It’s Annoying:

  • Giant Files: For big apps, the list becomes too long to manage.
  • Easy to Forget: If you add a listener but forget to add it here, it won’t work.

The new way saves time but hides details. The old way is clear but gets messy. It’s like choosing between a self-driving car (convenient but you don’t see the engine) and driving manually (more control but more work).

I’m aware you also Mix Both Methods, or just Write comments in the event class to list its listeners:

// Listeners: SendOrderConfirmationListener, UpdateInventoryListener
class OrderPlacedEvent
{
// ...
}

You can also run Run php artisan event:list in the terminal. It shows all events and their listeners

Change is hard, I know. The new method is great for big apps, but I miss the simplicity of the old list. Over time, I’m learning to trust Laravel’s new way of doing things. Still, it’s okay to use the old way sometimes, Laravel won’t judge!

What do you prefer? The new “magic” or the old “map”? Let me know!

P.S. There’s no wrong answer. Laravel lets you choose. Happy coding!

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Infinitypaul
Infinitypaul

Written by Infinitypaul

Software Developer — I admire breaking up complex problems into understandable and sizeable bits, solving daily challenges with technology

No responses yet

Write a response