From c6aa9c900d0175e1a0c133e8ffc68e5d4b036589 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Mon, 4 Feb 2019 14:57:56 +0100 Subject: [PATCH] fix Doctrine bridge version detection Since we cannot use feature changes to detect which version of the Doctrine bridge is installed I suggest that we parse the changelog and check if entries for 4.2 are present. --- DependencyInjection/DoctrineExtension.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/DependencyInjection/DoctrineExtension.php b/DependencyInjection/DoctrineExtension.php index 828876cf2..f1c874f8f 100644 --- a/DependencyInjection/DoctrineExtension.php +++ b/DependencyInjection/DoctrineExtension.php @@ -11,6 +11,7 @@ use LogicException; use Symfony\Bridge\Doctrine\DependencyInjection\AbstractDoctrineExtension; use Symfony\Bridge\Doctrine\Form\Type\DoctrineType; +use Symfony\Bridge\Doctrine\ManagerRegistry; use Symfony\Bridge\Doctrine\Messenger\DoctrineTransactionMiddleware; use Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor; use Symfony\Component\Config\FileLocator; @@ -25,7 +26,6 @@ use Symfony\Component\DependencyInjection\ServiceLocator; use Symfony\Component\Form\AbstractType; use Symfony\Component\Messenger\MessageBusInterface; -use Symfony\Component\PropertyInfo\PropertyInitializableExtractorInterface; /** * DoctrineExtension is an extension for the Doctrine DBAL and ORM library. @@ -800,7 +800,9 @@ protected function loadOrmCacheDrivers(array $entityManager, ContainerBuilder $c private function loadPropertyInfoExtractor($entityManagerName, ContainerBuilder $container) { $propertyExtractorDefinition = $container->register(sprintf('doctrine.orm.%s_entity_manager.property_info_extractor', $entityManagerName), DoctrineExtractor::class); - if (interface_exists(PropertyInitializableExtractorInterface::class)) { + $doctrineBridgePath = dirname((new \ReflectionClass(ManagerRegistry::class))->getFileName()); + + if (false !== strpos(file_get_contents($doctrineBridgePath.'/CHANGELOG.md'), "4.2.0\n-----")) { $argumentId = sprintf('doctrine.orm.%s_entity_manager', $entityManagerName); } else { $argumentId = sprintf('doctrine.orm.%s_entity_manager.metadata_factory', $entityManagerName);