diff --git a/DependencyInjection/DoctrineExtension.php b/DependencyInjection/DoctrineExtension.php index ba76ef9c4..001645bf3 100644 --- a/DependencyInjection/DoctrineExtension.php +++ b/DependencyInjection/DoctrineExtension.php @@ -25,7 +25,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. @@ -798,9 +797,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 +807,8 @@ private function loadPropertyInfoExtractor($entityManagerName, ContainerBuilder 'getMetadataFactory', ]); $metadataFactoryDefinition->setPublic(false); + } else { + $argumentId = sprintf('doctrine.orm.%s_entity_manager', $entityManagerName); } $propertyExtractorDefinition->addArgument(new Reference($argumentId));