Skip to content

Commit

Permalink
[DoctrineBundle] re-introduced parameters in the DIC for better overr…
Browse files Browse the repository at this point in the history
…idability
  • Loading branch information
fabpot committed May 13, 2011
1 parent 0de8a55 commit 05a946b
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 15 deletions.
Expand Up @@ -20,7 +20,7 @@ public function process(ContainerBuilder $container)
}

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

foreach ($container->findTaggedServiceIds('doctrine.event_subscriber') as $subscriberId => $instances) {
$this->registerSubscriber($subscriberId, $instances);
Expand Down
Expand Up @@ -69,14 +69,14 @@ protected function dbalLoad(array $config, ContainerBuilder $container)
$container->setAlias('database_connection', sprintf('doctrine.dbal.%s_connection', $this->defaultConnection));
$container->setAlias('doctrine.dbal.event_manager', new Alias(sprintf('doctrine.dbal.%s_connection.event_manager', $this->defaultConnection), false));

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

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

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

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

$options = array('auto_generate_proxy_classes', 'proxy_dir', 'proxy_namespace');
foreach ($options as $key) {
Expand Down
10 changes: 5 additions & 5 deletions src/Symfony/Bundle/DoctrineBundle/Resources/config/dbal.xml
Expand Up @@ -32,7 +32,7 @@
</service>

<service id="doctrine.dbal.connection_factory" class="%doctrine.dbal.connection_factory.class%">
<argument /> <!-- Types -->
<argument>%doctrine.dbal.connection_factory.types%</argument>
</service>

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

<service id="doctrine" class="%doctrine.class%">
<argument type="service" id="service_container" />
<argument type="collection" /> <!-- connections -->
<argument type="collection" /> <!-- entity managers -->
<argument /> <!-- default connection name -->
<argument /> <!-- default entity manager name -->
<argument>%doctrine.connections%</argument>
<argument>%doctrine.entity_managers%</argument>
<argument>%doctrine.default_connection%</argument>
<argument>%doctrine.default_entity_manager%</argument>
</service>
</services>
</container>
Expand Up @@ -33,7 +33,9 @@ public function testDbalOverrideDefaultConnection()
$loader->load(array(array(), array('dbal' => array('default_connection' => 'foo')), array()), $container);

// doctrine.dbal.default_connection
$this->assertEquals('foo', $container->getDefinition('doctrine')->getArgument(3), '->load() overrides existing configuration options');
$this->assertEquals('%doctrine.default_connection%', $container->getDefinition('doctrine')->getArgument(3), '->load() overrides existing configuration options');
$this->assertEquals('foo', $container->getParameter('doctrine.default_connection'), '->load() overrides existing configuration options');

}

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

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

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

$this->compileContainer($container);

$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.");
$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.");
$this->assertEquals('%doctrine.entity_managers%', $container->getDefinition('doctrine')->getArgument(2), "Set of the existing EntityManagers names is incorrect.");

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

$this->assertEquals(
array('test' => 'Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection\TestType'),
$container->getDefinition('doctrine.dbal.connection_factory')->getArgument(0)
$container->getParameter('doctrine.dbal.connection_factory.types')
);
$this->assertEquals('%doctrine.dbal.connection_factory.types%', $container->getDefinition('doctrine.dbal.connection_factory')->getArgument(0));
}

public function testSetCustomFunctions()
Expand Down

0 comments on commit 05a946b

Please sign in to comment.