[DependencyInjection] Allow disabling instanceof config inheritance #61511
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.
When configuring services like normalizers for a named serializer or Monolog processors for specific channels/handlers, autoconfiguration can get in the way.
For example, the
NormalizerInterface
is registered for autoconfiguration.If I try to register a custom normalizer for a specific named serializer, it also gets registered with the default serializer because of autoconfiguration:
Currently, the only way around this is to disable autoconfiguration entirely:
This PR introduces a new
inherit_configuration
option for service definitions and a#[WithoutInheritedConfiguration]
attribute.Both allow skipping the inheritance of
instanceof
conditionals from parent classes or interfaces:It can also be used to exclude specific services from inheriting
_instanceof
configurations:Why a new attribute?
I initially tried adding a new argument to the existing
#[Autoconfigure]
attribute.However, this attribute itself is resolved via instanceof conditionals.
I could try something like
$conditionals[$class]
, but since the attribute is repeatable, it’s unclear how to handle cases like: