Modernize the registration of services for extension points#498
Merged
stof merged 3 commits intoKnpLabs:masterfrom Jun 14, 2025
Merged
Modernize the registration of services for extension points#498stof merged 3 commits intoKnpLabs:masterfrom
stof merged 3 commits intoKnpLabs:masterfrom
Conversation
Letting Symfony process the collection of voters to build the `IteratorArgument` in the definition gives us all the features available in recent Symfony versions, while our own processing logic was not implementing them. For instance, this gives us support for the `[AsTaggedItem]` attribute as a way to specify the priority of the voter, which is great when using autoconfiguration.
This brings support for `#[AsTaggedItem]` to define the index.
The compiler pass is now only responsible for detecting whether we need to use the ChainProvider or no, but does not handle the configuration of the ChainProvider anymore.
garak
approved these changes
Jun 14, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
By using the core features of Symfony, we benefit of modern features like using
#[AsTaggedItem]to define the priority of services for sorting or the index (for the case of the service locator for renderers).Factory extensions are still processed using our existing logic (which does not support
#[AsTaggedItem]) because the priority is needed in the KnpMenu library to perform runtime sorting, instead of being a build-time sorting of the injected iterable.