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.
this is intended to replace PluginCommand and CommandExecutor, both of which are overengineered and unfit for purpose. Allowing a closure allows much greater flexibility.
We can't use this within the core yet, as plugins will expect PluginBase->getCommand() to return PluginCommand (with its associated setExecutor() and similar APIs). However, I think this is useful enough to add by itself.
Changes
API changes
ClosureCommand
class. The callback accepted is similar to (and compatible with) the signatures required byCommandExecutor
in the past, allowing easy migration.Behavioural changes
None. This class is not yet used in the core.
While I'd like to migrate directly to this, various plugins expect that
PluginCommand
will be returned byPluginBase->getCommand()
.In addition, there are questions about identifying plugin commands if this is used. This is no different a problem than we already see with regular
Command
users, but perhaps worth mentioning anyway.Backwards compatibility
No BC issues.
Follow-up
PluginCommand
andCommandExecutor
PluginBase->onCommand()
#5960 ?Tests
Not directly tested, but this is trivially PHPStan-verifiable.