Skip to content

Commit f7808de

Browse files
committed
[DoctrineBundle] moved more DIC definition into orm.xml
1 parent 6d33428 commit f7808de

File tree

3 files changed

+20
-19
lines changed

3 files changed

+20
-19
lines changed

src/Symfony/Bundle/DoctrineBundle/DependencyInjection/DoctrineExtension.php

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,10 @@ protected function dbalLoad(array $config, ContainerBuilder $container)
6464
$keys = array_keys($config['connections']);
6565
$config['default_connection'] = reset($keys);
6666
}
67+
$this->defaultConnection = $config['default_connection'];
6768

68-
$container->setAlias('database_connection', sprintf('doctrine.dbal.%s_connection', $config['default_connection']));
69-
$container->setAlias('doctrine.dbal.event_manager', new Alias(sprintf('doctrine.dbal.%s_connection.event_manager', $config['default_connection']), false));
69+
$container->setAlias('database_connection', sprintf('doctrine.dbal.%s_connection', $this->defaultConnection));
70+
$container->setAlias('doctrine.dbal.event_manager', new Alias(sprintf('doctrine.dbal.%s_connection.event_manager', $this->defaultConnection), false));
7071

7172
$container->getDefinition('doctrine.dbal.connection_factory')->replaceArgument(0, $config['types']);
7273

@@ -75,7 +76,7 @@ protected function dbalLoad(array $config, ContainerBuilder $container)
7576
$connections[$name] = sprintf('doctrine.dbal.%s_connection', $name);
7677
}
7778
$container->getDefinition('doctrine')->replaceArgument(1, $connections);
78-
$container->getDefinition('doctrine')->replaceArgument(3, $config['default_connection']);
79+
$container->getDefinition('doctrine')->replaceArgument(3, $this->defaultConnection);
7980

8081
foreach ($config['connections'] as $name => $connection) {
8182
$this->loadDbalConnection($name, $connection, $container);
@@ -220,23 +221,21 @@ protected function loadOrmEntityManager(array $entityManager, ContainerBuilder $
220221
}
221222
}
222223

223-
$entityManagerService = sprintf('doctrine.orm.%s_entity_manager', $entityManager['name']);
224-
$connectionId = isset($entityManager['connection']) ? sprintf('doctrine.dbal.%s_connection', $entityManager['connection']) : 'database_connection';
225-
$eventManagerID = isset($entityManager['connection']) ? sprintf('doctrine.dbal.%s_connection.event_manager', $entityManager['connection']) : 'doctrine.dbal.event_manager';
226-
227-
$ormEmArgs = array(
228-
new Reference($connectionId),
229-
new Reference(sprintf('doctrine.orm.%s_configuration', $entityManager['name']))
230-
);
224+
if (!isset($entityManager['connection'])) {
225+
$entityManager['connection'] = $this->defaultConnection;
226+
}
231227

232-
$ormEmDef = new Definition('%doctrine.orm.entity_manager.class%', $ormEmArgs);
233-
$ormEmDef->setFactoryClass('%doctrine.orm.entity_manager.class%');
234-
$ormEmDef->setFactoryMethod('create');
235-
$container->setDefinition($entityManagerService, $ormEmDef);
228+
$container
229+
->setDefinition(sprintf('doctrine.orm.%s_entity_manager', $entityManager['name']), new DefinitionDecorator('doctrine.orm.entity_manager.abstract'))
230+
->setArguments(array(
231+
new Reference(sprintf('doctrine.dbal.%s_connection', $entityManager['connection'])),
232+
new Reference(sprintf('doctrine.orm.%s_configuration', $entityManager['name']))
233+
))
234+
;
236235

237236
$container->setAlias(
238237
sprintf('doctrine.orm.%s_entity_manager.event_manager', $entityManager['name']),
239-
new Alias($eventManagerID, false)
238+
new Alias(sprintf('doctrine.dbal.%s_connection.event_manager', $entityManager['connection']), false)
240239
);
241240
}
242241

src/Symfony/Bundle/DoctrineBundle/Resources/config/orm.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,7 @@
5858
</service>
5959

6060
<service id="doctrine.orm.configuration" class="%doctrine.orm.configuration.class%" abstract="true" public="false" />
61+
62+
<service id="doctrine.orm.entity_manager.abstract" class="%doctrine.orm.entity_manager.class%" factory-class="%doctrine.orm.entity_manager.class%" factory-method="create" abstract="true" />
6163
</services>
6264
</container>

src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public function testDependencyInjectionConfigurationDefaults()
157157

158158
$arguments = $definition->getArguments();
159159
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]);
160-
$this->assertEquals('database_connection', (string) $arguments[0]);
160+
$this->assertEquals('doctrine.dbal.default_connection', (string) $arguments[0]);
161161
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[1]);
162162
$this->assertEquals('doctrine.orm.default_configuration', (string) $arguments[1]);
163163

@@ -195,7 +195,7 @@ public function testSingleEntityManagerConfiguration()
195195
$this->assertEquals('create', $definition->getFactoryMethod());
196196

197197
$this->assertDICConstructorArguments($definition, array(
198-
new Reference('database_connection'), new Reference('doctrine.orm.default_configuration')
198+
new Reference('doctrine.dbal.default_connection'), new Reference('doctrine.orm.default_configuration')
199199
));
200200
}
201201

@@ -233,7 +233,7 @@ public function testLoadSimpleSingleConnection()
233233
$this->assertEquals('create', $definition->getFactoryMethod());
234234

235235
$this->assertDICConstructorArguments($definition, array(
236-
new Reference('database_connection'), new Reference('doctrine.orm.default_configuration')
236+
new Reference('doctrine.dbal.default_connection'), new Reference('doctrine.orm.default_configuration')
237237
));
238238
}
239239

0 commit comments

Comments
 (0)