From f06f85fbd8d09f03bcd274505c3b94ded57d36bf Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Sun, 11 Jul 2021 09:58:39 +0200 Subject: [PATCH] [DoctrineBridge] fix setting default mapping type to attribute/annotation on php 8/7 respectively --- .../AbstractDoctrineExtension.php | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php b/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php index f67ecd35c9..41f241f1c0 100644 --- a/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php +++ b/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php @@ -11,6 +11,7 @@ namespace Symfony\Bridge\Doctrine\DependencyInjection; +use Symfony\Component\Config\Resource\GlobResource; use Symfony\Component\DependencyInjection\Alias; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; @@ -88,6 +89,25 @@ abstract class AbstractDoctrineExtension extends Extension if (!$mappingConfig) { continue; } + } elseif (!$mappingConfig['type'] && \PHP_VERSION_ID < 80000) { + $mappingConfig['type'] = 'annotation'; + } elseif (!$mappingConfig['type']) { + $mappingConfig['type'] = 'attribute'; + + $glob = new GlobResource($mappingConfig['dir'], '*', true); + $container->addResource($glob); + + foreach ($glob as $file) { + $content = file_get_contents($file); + + if (preg_match('/^#\[.*Entity\b/m', $content)) { + break; + } + if (preg_match('/^ \* @.*Entity\b/m', $content)) { + $mappingConfig['type'] = 'annotation'; + break; + } + } } $this->assertValidMappingConfiguration($mappingConfig, $objectManager['name']);