[9.x] Allow maintenance mode events to be listened to in closure based listeners #44417
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I'm not sure if this is a bug as such but I ran into this today.
I was trying to listen to
MaintenanceModeDisabled::class
and broadcast this (which I don't think works in maintenance mode anyway) but nonetheless, was faced with this error when registering my listener as usual, with the event type-hinted in the handler so I could then dispatch my own event to broadcast it;This was met with an error;
Too few arguments to function ....\MaintenanceModeDisabledListener::handle(), 0 passed in .../vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php on line 441 and exactly 1 expected
Upon further experimenting I realised that the following listener would also fail and mean you couldn't listen to these events using closures;
This behaviour is confirmed with the following failing tests;
By instantiating the events for dispatch, the events can be listened to using closures. I also couldn't really find anywhere else in the framework where
->dispatch($eventClassNameAsString)
was used so hoped that this would be the solution. I wasn't sure if any tests were relevant or required.