[5.8] Container - lazy load tagged services #26953
Merged
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.
Currently the container immediately resolves all services which are tagged with a tag. The resolving of a service from the container doesn't need to happen until the service is actually needed so by deferring the resolving of the service until it's actually needed we potentially don't have to instantiate a bunch of objects which are never gonna be used.
Here only the first service would be resolved from the container as opposed to the current behavior where all services (potentially hundreds) would be resolved immediately.
Breaking changes:
tagged
method now returns aniterable
instead of an explicitarray
which means that doing$container->tagged('foo')[0]
is not possible anymore (but I don't see why would somebody use that in a real application).array
it will now break, either thearray
type-hint should be removed or it should be replaced withiterable
.