From 8aba9e997383190d4ee7fe63037413a8a2e87daa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Mon, 3 Dec 2018 16:07:24 +0100 Subject: [PATCH] Better feature detection for DoctrineExtractor --- DependencyInjection/DoctrineExtension.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/DependencyInjection/DoctrineExtension.php b/DependencyInjection/DoctrineExtension.php index ba76ef9c4..2b62894cd 100644 --- a/DependencyInjection/DoctrineExtension.php +++ b/DependencyInjection/DoctrineExtension.php @@ -26,6 +26,7 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\PropertyInfo\PropertyInitializableExtractorInterface; +use Symfony\Contracts\Service\ResetInterface; /** * DoctrineExtension is an extension for the Doctrine DBAL and ORM library. @@ -798,9 +799,8 @@ 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)) { - $argumentId = sprintf('doctrine.orm.%s_entity_manager', $entityManagerName); - } else { + $constructorParameterType = (new \ReflectionClass(DoctrineExtractor::class))->getConstructor()->getParameters()[0]->getType(); + if (null !== $constructorParameterType && $constructorParameterType->getName() === ClassMetadataFactory::class) { $argumentId = sprintf('doctrine.orm.%s_entity_manager.metadata_factory', $entityManagerName); $metadataFactoryDefinition = $container->register($argumentId, ClassMetadataFactory::class); @@ -809,6 +809,8 @@ private function loadPropertyInfoExtractor($entityManagerName, ContainerBuilder 'getMetadataFactory', ]); $metadataFactoryDefinition->setPublic(false); + } else { + $argumentId = sprintf('doctrine.orm.%s_entity_manager', $entityManagerName); } $propertyExtractorDefinition->addArgument(new Reference($argumentId));