Skip to content

Commit 05a946b

Browse files
committed
[DoctrineBundle] re-introduced parameters in the DIC for better overridability
1 parent 0de8a55 commit 05a946b

File tree

4 files changed

+20
-15
lines changed

4 files changed

+20
-15
lines changed

src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Compiler/RegisterEventListenersAndSubscribersPass.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public function process(ContainerBuilder $container)
2020
}
2121

2222
$this->container = $container;
23-
$this->connections = $container->getDefinition('doctrine')->getArgument(1);
23+
$this->connections = $container->getParameter('doctrine.connections');
2424

2525
foreach ($container->findTaggedServiceIds('doctrine.event_subscriber') as $subscriberId => $instances) {
2626
$this->registerSubscriber($subscriberId, $instances);

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,14 @@ protected function dbalLoad(array $config, ContainerBuilder $container)
6969
$container->setAlias('database_connection', sprintf('doctrine.dbal.%s_connection', $this->defaultConnection));
7070
$container->setAlias('doctrine.dbal.event_manager', new Alias(sprintf('doctrine.dbal.%s_connection.event_manager', $this->defaultConnection), false));
7171

72-
$container->getDefinition('doctrine.dbal.connection_factory')->replaceArgument(0, $config['types']);
72+
$container->setParameter('doctrine.dbal.connection_factory.types', $config['types']);
7373

7474
$connections = array();
7575
foreach (array_keys($config['connections']) as $name) {
7676
$connections[$name] = sprintf('doctrine.dbal.%s_connection', $name);
7777
}
78-
$container->getDefinition('doctrine')->replaceArgument(1, $connections);
79-
$container->getDefinition('doctrine')->replaceArgument(3, $this->defaultConnection);
78+
$container->setParameter('doctrine.connections', $connections);
79+
$container->setParameter('doctrine.default_connection', $this->defaultConnection);
8080

8181
foreach ($config['connections'] as $name => $connection) {
8282
$this->loadDbalConnection($name, $connection, $container);
@@ -173,13 +173,13 @@ protected function ormLoad(array $config, ContainerBuilder $container)
173173
foreach (array_keys($config['entity_managers']) as $name) {
174174
$this->entityManagers[$name] = sprintf('doctrine.orm.%s_entity_manager', $name);
175175
}
176-
$container->getDefinition('doctrine')->replaceArgument(2, $this->entityManagers);
176+
$container->setParameter('doctrine.entity_managers', $this->entityManagers);
177177

178178
if (empty($config['default_entity_manager'])) {
179179
$tmp = array_keys($this->entityManagers);
180180
$config['default_entity_manager'] = reset($tmp);
181181
}
182-
$container->getDefinition('doctrine')->replaceArgument(4, $config['default_entity_manager']);
182+
$container->setParameter('doctrine.default_entity_manager', $config['default_entity_manager']);
183183

184184
$options = array('auto_generate_proxy_classes', 'proxy_dir', 'proxy_namespace');
185185
foreach ($options as $key) {

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
</service>
3333

3434
<service id="doctrine.dbal.connection_factory" class="%doctrine.dbal.connection_factory.class%">
35-
<argument /> <!-- Types -->
35+
<argument>%doctrine.dbal.connection_factory.types%</argument>
3636
</service>
3737

3838
<service id="doctrine.dbal.connection" class="%doctrine.dbal.connection.class%" factory-service="doctrine.dbal.connection_factory" factory-method="createConnection" abstract="true" />
@@ -43,10 +43,10 @@
4343

4444
<service id="doctrine" class="%doctrine.class%">
4545
<argument type="service" id="service_container" />
46-
<argument type="collection" /> <!-- connections -->
47-
<argument type="collection" /> <!-- entity managers -->
48-
<argument /> <!-- default connection name -->
49-
<argument /> <!-- default entity manager name -->
46+
<argument>%doctrine.connections%</argument>
47+
<argument>%doctrine.entity_managers%</argument>
48+
<argument>%doctrine.default_connection%</argument>
49+
<argument>%doctrine.default_entity_manager%</argument>
5050
</service>
5151
</services>
5252
</container>

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ public function testDbalOverrideDefaultConnection()
3333
$loader->load(array(array(), array('dbal' => array('default_connection' => 'foo')), array()), $container);
3434

3535
// doctrine.dbal.default_connection
36-
$this->assertEquals('foo', $container->getDefinition('doctrine')->getArgument(3), '->load() overrides existing configuration options');
36+
$this->assertEquals('%doctrine.default_connection%', $container->getDefinition('doctrine')->getArgument(3), '->load() overrides existing configuration options');
37+
$this->assertEquals('foo', $container->getParameter('doctrine.default_connection'), '->load() overrides existing configuration options');
38+
3739
}
3840

3941
public function testDbalLoad()
@@ -153,7 +155,8 @@ public function testDependencyInjectionConfigurationDefaults()
153155
$this->assertEquals('%doctrine.orm.entity_manager.class%', $definition->getFactoryClass());
154156
$this->assertEquals('create', $definition->getFactoryMethod());
155157

156-
$this->assertEquals(array('default' => 'doctrine.orm.default_entity_manager'), $container->getDefinition('doctrine')->getArgument(2), "Set of the existing EntityManagers names is incorrect.");
158+
$this->assertEquals(array('default' => 'doctrine.orm.default_entity_manager'), $container->getParameter('doctrine.entity_managers'), "Set of the existing EntityManagers names is incorrect.");
159+
$this->assertEquals('%doctrine.entity_managers%', $container->getDefinition('doctrine')->getArgument(2), "Set of the existing EntityManagers names is incorrect.");
157160

158161
$arguments = $definition->getArguments();
159162
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]);
@@ -574,7 +577,8 @@ public function testMultipleEntityManagersMappingBundleDefinitions()
574577

575578
$this->compileContainer($container);
576579

577-
$this->assertEquals(array('em1' => 'doctrine.orm.em1_entity_manager', 'em2' => 'doctrine.orm.em2_entity_manager'), $container->getDefinition('doctrine')->getArgument(2), "Set of the existing EntityManagers names is incorrect.");
580+
$this->assertEquals(array('em1' => 'doctrine.orm.em1_entity_manager', 'em2' => 'doctrine.orm.em2_entity_manager'), $container->getParameter('doctrine.entity_managers'), "Set of the existing EntityManagers names is incorrect.");
581+
$this->assertEquals('%doctrine.entity_managers%', $container->getDefinition('doctrine')->getArgument(2), "Set of the existing EntityManagers names is incorrect.");
578582

579583
$def1 = $container->getDefinition('doctrine.orm.em1_metadata_driver');
580584
$def2 = $container->getDefinition('doctrine.orm.em2_metadata_driver');
@@ -636,8 +640,9 @@ public function testSetTypes()
636640

637641
$this->assertEquals(
638642
array('test' => 'Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection\TestType'),
639-
$container->getDefinition('doctrine.dbal.connection_factory')->getArgument(0)
643+
$container->getParameter('doctrine.dbal.connection_factory.types')
640644
);
645+
$this->assertEquals('%doctrine.dbal.connection_factory.types%', $container->getDefinition('doctrine.dbal.connection_factory')->getArgument(0));
641646
}
642647

643648
public function testSetCustomFunctions()

0 commit comments

Comments
 (0)