Consider a Laravel event subscriber class that listens to two different events. What will happen when one of those events is fired?
class UserEventSubscriber { public function onUserLogin($event) { logger('User logged in: ' . $event->user->name); } public function onUserLogout($event) { logger('User logged out: ' . $event->user->name); } public function subscribe($events) { $events->listen(LoginEvent::class, [self::class, 'onUserLogin']); $events->listen(LogoutEvent::class, [self::class, 'onUserLogout']); } } // When LoginEvent is fired, what happens?
Think about how Laravel matches events to subscriber methods.
Laravel calls only the subscriber method registered for the specific event fired. So when LoginEvent is fired, only onUserLogin runs.
Choose the correct way to register an event subscriber class in Laravel's EventServiceProvider.
class EventServiceProvider extends ServiceProvider { protected $subscribe = [ // Which line is correct here? ]; }
Look for the syntax that references the class name as a string with ::class.
Laravel expects the subscriber class name with ::class in the $subscribe array for automatic registration.
Given this subscriber method, why might it never be triggered when the event fires?
class UserEventSubscriber { public function onUserRegistered($event) { logger('User registered: ' . $event->user->email); } public function subscribe($events) { $events->listen('UserRegistered', [self::class, 'onUserRegistered']); } } // Event fired as: event(new UserRegistered($user));
Check how Laravel matches event names to classes.
Laravel expects the full class name including namespace for event listeners. Using just 'UserRegistered' string causes no match.
Given this subscriber and these events fired in order, what will be logged?
class OrderEventSubscriber { public function onOrderPlaced($event) { logger('Order placed: ' . $event->order->id); } public function onOrderShipped($event) { logger('Order shipped: ' . $event->order->id); } public function subscribe($events) { $events->listen(OrderPlaced::class, [self::class, 'onOrderPlaced']); $events->listen(OrderShipped::class, [self::class, 'onOrderShipped']); } } // Events fired: event(new OrderPlaced($order)); event(new OrderShipped($order));
Think about how Laravel calls subscriber methods for each event fired.
Each event triggers its corresponding subscriber method, so both logs appear in order.
Which reason best explains why you might choose an event subscriber class over separate listener classes?
Think about code organization and grouping related logic.
Subscribers let you group multiple event handlers in one class, making code cleaner and easier to maintain.