Skip to content

Commit 1b5a951

Browse files
authored
Remove $aliasMap argument from DoctrineOrmMappingsPass (#2169)
1 parent 56d1865 commit 1b5a951

3 files changed

Lines changed: 164 additions & 17 deletions

File tree

UPGRADE-3.2.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
UPGRADE FROM 3.1 to 3.2
2+
=======================
3+
4+
DoctrineOrmMappingsPass
5+
-----------------------
6+
7+
The `$aliasMap` argument of the `DoctrineOrmMappingsPass` class and methods
8+
is removed. Namespace aliases are no longer supported in Doctrine.

src/DependencyInjection/Compiler/DoctrineOrmMappingsPass.php

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@ final class DoctrineOrmMappingsPass extends RegisterMappingsPass
3232
* @param string|false $enabledParameter If specified, the compiler pass only executes
3333
* if this parameter is defined in the service
3434
* container.
35-
* @param string[] $aliasMap Map of alias to namespace.
3635
*/
37-
public function __construct(Definition|Reference $driver, array $namespaces, array $managerParameters, string|false $enabledParameter = false, array $aliasMap = [])
36+
public function __construct(Definition|Reference $driver, array $namespaces, array $managerParameters, string|false $enabledParameter = false)
3837
{
3938
$managerParameters[] = 'doctrine.default_entity_manager';
4039

@@ -44,9 +43,6 @@ public function __construct(Definition|Reference $driver, array $namespaces, arr
4443
$managerParameters,
4544
'doctrine.orm.%s_metadata_driver',
4645
$enabledParameter,
47-
'doctrine.orm.%s_configuration',
48-
'addEntityNamespace',
49-
$aliasMap,
5046
);
5147
}
5248

@@ -59,14 +55,13 @@ public function __construct(Definition|Reference $driver, array $namespaces, arr
5955
* @param string|false $enabledParameter Service container parameter that must be present to
6056
* enable the mapping. Set to false to not do any check,
6157
* optional.
62-
* @param string[] $aliasMap Map of alias to namespace.
6358
*/
64-
public static function createXmlMappingDriver(array $namespaces, array $managerParameters = [], string|false $enabledParameter = false, array $aliasMap = [], bool $enableXsdValidation = false): self
59+
public static function createXmlMappingDriver(array $namespaces, array $managerParameters = [], string|false $enabledParameter = false, bool $enableXsdValidation = false): self
6560
{
6661
$locator = new Definition(SymfonyFileLocator::class, [$namespaces, '.orm.xml']);
6762
$driver = new Definition(XmlDriver::class, [$locator, XmlDriver::DEFAULT_FILE_EXTENSION, $enableXsdValidation]);
6863

69-
return new DoctrineOrmMappingsPass($driver, $namespaces, $managerParameters, $enabledParameter, $aliasMap);
64+
return new DoctrineOrmMappingsPass($driver, $namespaces, $managerParameters, $enabledParameter);
7065
}
7166

7267
/**
@@ -78,14 +73,13 @@ public static function createXmlMappingDriver(array $namespaces, array $managerP
7873
* @param string|false $enabledParameter Service container parameter that must be present to
7974
* enable the mapping. Set to false to not do any check,
8075
* optional.
81-
* @param string[] $aliasMap Map of alias to namespace.
8276
*/
83-
public static function createPhpMappingDriver(array $namespaces, array $managerParameters = [], string|false $enabledParameter = false, array $aliasMap = []): self
77+
public static function createPhpMappingDriver(array $namespaces, array $managerParameters = [], string|false $enabledParameter = false): self
8478
{
8579
$locator = new Definition(SymfonyFileLocator::class, [$namespaces, '.php']);
8680
$driver = new Definition(PHPDriver::class, [$locator]);
8781

88-
return new DoctrineOrmMappingsPass($driver, $namespaces, $managerParameters, $enabledParameter, $aliasMap);
82+
return new DoctrineOrmMappingsPass($driver, $namespaces, $managerParameters, $enabledParameter);
8983
}
9084

9185
/**
@@ -98,13 +92,12 @@ public static function createPhpMappingDriver(array $namespaces, array $managerP
9892
* @param string|false $enabledParameter Service container parameter that must be present to
9993
* enable the mapping. Set to false to not do any check,
10094
* optional.
101-
* @param string[] $aliasMap Map of alias to namespace.
10295
*/
103-
public static function createAttributeMappingDriver(array $namespaces, array $directories, array $managerParameters = [], string|false $enabledParameter = false, array $aliasMap = []): self
96+
public static function createAttributeMappingDriver(array $namespaces, array $directories, array $managerParameters = [], string|false $enabledParameter = false): self
10497
{
10598
$driver = new Definition(AttributeDriver::class, [$directories]);
10699

107-
return new DoctrineOrmMappingsPass($driver, $namespaces, $managerParameters, $enabledParameter, $aliasMap);
100+
return new DoctrineOrmMappingsPass($driver, $namespaces, $managerParameters, $enabledParameter);
108101
}
109102

110103
/**
@@ -117,12 +110,11 @@ public static function createAttributeMappingDriver(array $namespaces, array $di
117110
* @param string|false $enabledParameter Service container parameter that must be present to
118111
* enable the mapping. Set to false to not do any check,
119112
* optional.
120-
* @param string[] $aliasMap Map of alias to namespace.
121113
*/
122-
public static function createStaticPhpMappingDriver(array $namespaces, array $directories, array $managerParameters = [], string|false $enabledParameter = false, array $aliasMap = []): self
114+
public static function createStaticPhpMappingDriver(array $namespaces, array $directories, array $managerParameters = [], string|false $enabledParameter = false): self
123115
{
124116
$driver = new Definition(StaticPHPDriver::class, [$directories]);
125117

126-
return new DoctrineOrmMappingsPass($driver, $namespaces, $managerParameters, $enabledParameter, $aliasMap);
118+
return new DoctrineOrmMappingsPass($driver, $namespaces, $managerParameters, $enabledParameter);
127119
}
128120
}
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Doctrine\Bundle\DoctrineBundle\Tests\DependencyInjection\Compiler;
6+
7+
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\DoctrineOrmMappingsPass;
8+
use Doctrine\ORM\EntityManagerInterface;
9+
use Doctrine\ORM\Mapping\Driver\AttributeDriver;
10+
use Doctrine\ORM\Mapping\Driver\XmlDriver;
11+
use Doctrine\Persistence\Mapping\Driver\PHPDriver;
12+
use Doctrine\Persistence\Mapping\Driver\StaticPHPDriver;
13+
use Doctrine\Persistence\Mapping\Driver\SymfonyFileLocator;
14+
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\DependencyInjection\ContainerBuilder;
16+
use Symfony\Component\DependencyInjection\Definition;
17+
18+
use function interface_exists;
19+
20+
class DoctrineOrmMappingsPassTest extends TestCase
21+
{
22+
public static function setUpBeforeClass(): void
23+
{
24+
if (interface_exists(EntityManagerInterface::class)) {
25+
return;
26+
}
27+
28+
self::markTestSkipped('This test requires ORM');
29+
}
30+
31+
public function testCreateXmlMappingDriver(): void
32+
{
33+
$namespaces = ['App\Entity' => '/path/to/mapping'];
34+
$pass = DoctrineOrmMappingsPass::createXmlMappingDriver($namespaces);
35+
36+
$container = new ContainerBuilder();
37+
$container->setParameter('doctrine.default_entity_manager', 'default');
38+
39+
$chainDriverDef = new Definition();
40+
$container->setDefinition('doctrine.orm.default_metadata_driver', $chainDriverDef);
41+
42+
$pass->process($container);
43+
44+
$methodCalls = $chainDriverDef->getMethodCalls();
45+
$this->assertCount(1, $methodCalls);
46+
$this->assertSame('addDriver', $methodCalls[0][0]);
47+
48+
$driverDef = $methodCalls[0][1][0];
49+
$this->assertInstanceOf(Definition::class, $driverDef);
50+
51+
$this->assertSame(XmlDriver::class, $driverDef->getClass());
52+
53+
$args = $driverDef->getArguments();
54+
$locatorDef = $args[0];
55+
$this->assertInstanceOf(Definition::class, $locatorDef);
56+
$this->assertSame(SymfonyFileLocator::class, $locatorDef->getClass());
57+
$this->assertSame($namespaces, $locatorDef->getArgument(0));
58+
$this->assertSame('.orm.xml', $locatorDef->getArgument(1));
59+
60+
$this->assertSame(XmlDriver::DEFAULT_FILE_EXTENSION, $args[1]);
61+
$this->assertFalse($args[2]);
62+
}
63+
64+
public function testCreatePhpMappingDriver(): void
65+
{
66+
$namespaces = ['App\Entity' => '/path/to/mapping'];
67+
$pass = DoctrineOrmMappingsPass::createPhpMappingDriver($namespaces);
68+
69+
$container = new ContainerBuilder();
70+
$container->setParameter('doctrine.default_entity_manager', 'default');
71+
72+
$chainDriverDef = new Definition();
73+
$container->setDefinition('doctrine.orm.default_metadata_driver', $chainDriverDef);
74+
75+
$pass->process($container);
76+
77+
$methodCalls = $chainDriverDef->getMethodCalls();
78+
$this->assertCount(1, $methodCalls);
79+
$this->assertSame('addDriver', $methodCalls[0][0]);
80+
81+
$driverDef = $methodCalls[0][1][0];
82+
$this->assertInstanceOf(Definition::class, $driverDef);
83+
84+
$this->assertSame(PHPDriver::class, $driverDef->getClass());
85+
86+
$args = $driverDef->getArguments();
87+
$locatorDef = $args[0];
88+
$this->assertInstanceOf(Definition::class, $locatorDef);
89+
$this->assertSame(SymfonyFileLocator::class, $locatorDef->getClass());
90+
$this->assertSame($namespaces, $locatorDef->getArgument(0));
91+
$this->assertSame('.php', $locatorDef->getArgument(1));
92+
}
93+
94+
public function testCreateAttributeMappingDriver(): void
95+
{
96+
$namespaces = ['App\Entity'];
97+
$directories = ['/path/to/mapping'];
98+
$pass = DoctrineOrmMappingsPass::createAttributeMappingDriver($namespaces, $directories);
99+
100+
$container = new ContainerBuilder();
101+
$container->setParameter('doctrine.default_entity_manager', 'default');
102+
103+
$chainDriverDef = new Definition();
104+
$container->setDefinition('doctrine.orm.default_metadata_driver', $chainDriverDef);
105+
106+
$pass->process($container);
107+
108+
$methodCalls = $chainDriverDef->getMethodCalls();
109+
$this->assertCount(1, $methodCalls);
110+
$this->assertSame('addDriver', $methodCalls[0][0]);
111+
112+
$driverDef = $methodCalls[0][1][0];
113+
$this->assertInstanceOf(Definition::class, $driverDef);
114+
115+
$this->assertSame(AttributeDriver::class, $driverDef->getClass());
116+
117+
$args = $driverDef->getArguments();
118+
$this->assertSame($directories, $args[0]);
119+
}
120+
121+
public function testCreateStaticPhpMappingDriver(): void
122+
{
123+
$namespaces = ['App\Entity'];
124+
$directories = ['/path/to/mapping'];
125+
$pass = DoctrineOrmMappingsPass::createStaticPhpMappingDriver($namespaces, $directories);
126+
127+
$container = new ContainerBuilder();
128+
$container->setParameter('doctrine.default_entity_manager', 'default');
129+
130+
$chainDriverDef = new Definition();
131+
$container->setDefinition('doctrine.orm.default_metadata_driver', $chainDriverDef);
132+
133+
$pass->process($container);
134+
135+
$methodCalls = $chainDriverDef->getMethodCalls();
136+
$this->assertCount(1, $methodCalls);
137+
$this->assertSame('addDriver', $methodCalls[0][0]);
138+
139+
$driverDef = $methodCalls[0][1][0];
140+
$this->assertInstanceOf(Definition::class, $driverDef);
141+
142+
$this->assertSame(StaticPHPDriver::class, $driverDef->getClass());
143+
144+
$args = $driverDef->getArguments();
145+
$this->assertSame($directories, $args[0]);
146+
}
147+
}

0 commit comments

Comments
 (0)