Skip to content

Commit e24f0b9

Browse files
Fix annotation/attribute driver mapping pass compatibility with ORM 3
1 parent d088386 commit e24f0b9

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/DependencyInjection/Compiler/DoctrineOrmMappingsPass.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
use Symfony\Component\DependencyInjection\Definition;
1717
use Symfony\Component\DependencyInjection\Reference;
1818

19+
use function method_exists;
20+
1921
/**
2022
* Class for Symfony bundles to configure mappings for model classes not in the
2123
* auto-mapped folder.
@@ -154,8 +156,15 @@ public static function createAnnotationMappingDriver(array $namespaces, array $d
154156
);
155157

156158
$reader = new Reference('annotation_reader');
159+
160+
$driverArgs = [$reader, $directories];
157161
/* @phpstan-ignore class.notFound */
158-
$driver = new Definition(AnnotationDriver::class, [$reader, $directories, $reportFieldsWhereDeclared]);
162+
if (method_exists(AnnotationDriver::class, 'getReader')) {
163+
$driverArgs[] = $reportFieldsWhereDeclared;
164+
}
165+
166+
/* @phpstan-ignore class.notFound */
167+
$driver = new Definition(AnnotationDriver::class, $driverArgs);
159168

160169
return new DoctrineOrmMappingsPass($driver, $namespaces, $managerParameters, $enabledParameter, $aliasMap);
161170
}
@@ -177,7 +186,12 @@ public static function createAnnotationMappingDriver(array $namespaces, array $d
177186
*/
178187
public static function createAttributeMappingDriver(array $namespaces, array $directories, array $managerParameters = [], $enabledParameter = false, array $aliasMap = [], bool $reportFieldsWhereDeclared = false)
179188
{
180-
$driver = new Definition(AttributeDriver::class, [$directories, $reportFieldsWhereDeclared]);
189+
$driverArgs = [$directories];
190+
if (method_exists(AttributeDriver::class, 'getReader')) {
191+
$driverArgs[] = $reportFieldsWhereDeclared;
192+
}
193+
194+
$driver = new Definition(AttributeDriver::class, $driverArgs);
181195

182196
return new DoctrineOrmMappingsPass($driver, $namespaces, $managerParameters, $enabledParameter, $aliasMap);
183197
}

0 commit comments

Comments
 (0)