(5.4) add compatibility layer for doctrine/annotations v1 and v2 #48912
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.
The previous code always registered
annotations.dummy_registry
and unregistered it withdoctrine/annotations
v1.This has the unexpected effect to break the call to
addGlobalIgnoredName
withdoctrine/annotations
v2 : #48792 (comment)I propose a novel approach with a workaround that:
annotations.dummy_registry
only withdoctrine/annotations
v1, which avoid registering and unregistering a dummy serviceregisterLoader
, because a conflict block the installation ofdoctrine/annotations
withoutregisterUniqueLoader
: https://github.com/symfony/symfony/blob/5.4/src/Symfony/Bundle/FrameworkBundle/composer.json#L72 andregisterUniqueLoader
is available in 1.13.1 and later releases: https://github.com/doctrine/annotations/blob/1.13.x/lib/Doctrine/Common/Annotations/AnnotationRegistry.php#L124, so a test onregisterUniqueLoader
is enough to identifydoctrine/annotations
v1These changes can be tested with this reproducer: https://github.com/alexislefebvre/symfony_bug_app_48792
Downgrading and upgrading become possible:
composer require doctrine/annotations:~1.13.0 --with-all-dependencies composer require doctrine/annotations:^1.13.0 --with-all-dependencies composer require doctrine/annotations:^2.0 --with-all-dependencies
It looks like services declaration was meant to be as simple as possible, and logic went into
FrameworkExtension
, I think it made things more complicated in this case, with the serviceannotations.dummy_registry
being declared and unregistered just after. So I took a simpler approach.