0
0
Laravelframework~20 mins

Event subscribers in Laravel - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Laravel Event Subscriber Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What happens when an event subscriber handles multiple events?

Consider a Laravel event subscriber class that listens to two different events. What will happen when one of those events is fired?

Laravel
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?
ABoth onUserLogin and onUserLogout methods are called regardless of event type.
BNo methods are called unless the subscriber is manually invoked.
COnly the onUserLogin method is called, logging the login message.
DOnly the onUserLogout method is called, ignoring the LoginEvent.
Attempts:
2 left
💡 Hint

Think about how Laravel matches events to subscriber methods.

📝 Syntax
intermediate
1:30remaining
Which code correctly registers an event subscriber in Laravel?

Choose the correct way to register an event subscriber class in Laravel's EventServiceProvider.

Laravel
class EventServiceProvider extends ServiceProvider {
    protected $subscribe = [
        // Which line is correct here?
    ];
}
A'UserEventSubscriber',
BUserEventSubscriber::class,
Cnew UserEventSubscriber(),
DUserEventSubscriber
Attempts:
2 left
💡 Hint

Look for the syntax that references the class name as a string with ::class.

🔧 Debug
advanced
2:30remaining
Why does this subscriber method not get called?

Given this subscriber method, why might it never be triggered when the event fires?

Laravel
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));
AThe event is fired incorrectly using event() instead of dispatch().
BThe method onUserRegistered is private and cannot be called.
CThe subscriber class is not registered in EventServiceProvider.
DThe event name string 'UserRegistered' does not match the event class name with namespace.
Attempts:
2 left
💡 Hint

Check how Laravel matches event names to classes.

state_output
advanced
2:30remaining
What is the output after firing multiple events handled by one subscriber?

Given this subscriber and these events fired in order, what will be logged?

Laravel
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));
ALogs 'Order placed: {id}' then 'Order shipped: {id}' in that order.
BLogs only 'Order placed: {id}' and ignores the shipped event.
CLogs only 'Order shipped: {id}' and ignores the placed event.
DNo logs appear because subscriber methods are not called automatically.
Attempts:
2 left
💡 Hint

Think about how Laravel calls subscriber methods for each event fired.

🧠 Conceptual
expert
3:00remaining
Why use event subscribers instead of individual listeners in Laravel?

Which reason best explains why you might choose an event subscriber class over separate listener classes?

ATo group related event handling methods in one class for better organization and reuse.
BBecause subscribers automatically queue events without extra setup.
CSubscribers run before middleware, unlike listeners which run after.
DSubscribers can listen to events from other applications automatically.
Attempts:
2 left
💡 Hint

Think about code organization and grouping related logic.