Listener¶
A listener is a callable function that is registered to handle a specific event or message when it is dispatched. Listeners are a core concept in event-driven and pub/sub architectures.
In PHP, listeners are commonly registered with an event dispatcher. When an event is dispatched, the dispatcher calls all registered listeners for that event type, passing the event object as an argument. Listeners may be prioritised, stoppable, or asynchronous.
PSR-14 standardises the event dispatcher interface in PHP, making listeners interoperable across frameworks. Symfony’s EventDispatcher, Laravel’s Events system, and many other frameworks implement this pattern.
A listener differs from an observer in that listeners are usually registered externally on a dispatcher, while observers are typically attached directly to the subject object they watch.
<?php
// PSR-14 compliant listener
use App\Event\UserRegisteredEvent;
final class SendWelcomeEmailListener
{
public function __invoke(UserRegisteredEvent $event): void
{
$user = $event->getUser();
// send welcome email to $user->getEmail()
}
}
// Registering the listener (Symfony example)
// In services.yaml:
// App\Listener\SendWelcomeEmailListener:
// tags:
// - { name: kernel.event_listener, event: App\Event\UserRegisteredEvent }
?>
See also PSR-14: Event Dispatcher, Events and Event Listeners and Laravel Events.
Related : Pub/Sub, Event Driven, Message Bus, Observer Design Pattern, Decoupling, Callbacks, Property Hook
Related packages : symfony/event-dispatcher, league/event