[DoctrineBundle] moved more DIC definition into orm.xml

This commit is contained in:
Fabien Potencier 2011-05-04 10:53:05 +02:00
parent 6d334289ee
commit f7808de3a8
3 changed files with 20 additions and 19 deletions

View File

@ -64,9 +64,10 @@ class DoctrineExtension extends AbstractDoctrineExtension
$keys = array_keys($config['connections']); $keys = array_keys($config['connections']);
$config['default_connection'] = reset($keys); $config['default_connection'] = reset($keys);
} }
$this->defaultConnection = $config['default_connection'];
$container->setAlias('database_connection', sprintf('doctrine.dbal.%s_connection', $config['default_connection'])); $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', $config['default_connection']), false)); $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->getDefinition('doctrine.dbal.connection_factory')->replaceArgument(0, $config['types']);
@ -75,7 +76,7 @@ class DoctrineExtension extends AbstractDoctrineExtension
$connections[$name] = sprintf('doctrine.dbal.%s_connection', $name); $connections[$name] = sprintf('doctrine.dbal.%s_connection', $name);
} }
$container->getDefinition('doctrine')->replaceArgument(1, $connections); $container->getDefinition('doctrine')->replaceArgument(1, $connections);
$container->getDefinition('doctrine')->replaceArgument(3, $config['default_connection']); $container->getDefinition('doctrine')->replaceArgument(3, $this->defaultConnection);
foreach ($config['connections'] as $name => $connection) { foreach ($config['connections'] as $name => $connection) {
$this->loadDbalConnection($name, $connection, $container); $this->loadDbalConnection($name, $connection, $container);
@ -220,23 +221,21 @@ class DoctrineExtension extends AbstractDoctrineExtension
} }
} }
$entityManagerService = sprintf('doctrine.orm.%s_entity_manager', $entityManager['name']); if (!isset($entityManager['connection'])) {
$connectionId = isset($entityManager['connection']) ? sprintf('doctrine.dbal.%s_connection', $entityManager['connection']) : 'database_connection'; $entityManager['connection'] = $this->defaultConnection;
$eventManagerID = isset($entityManager['connection']) ? sprintf('doctrine.dbal.%s_connection.event_manager', $entityManager['connection']) : 'doctrine.dbal.event_manager'; }
$ormEmArgs = array( $container
new Reference($connectionId), ->setDefinition(sprintf('doctrine.orm.%s_entity_manager', $entityManager['name']), new DefinitionDecorator('doctrine.orm.entity_manager.abstract'))
new Reference(sprintf('doctrine.orm.%s_configuration', $entityManager['name'])) ->setArguments(array(
); new Reference(sprintf('doctrine.dbal.%s_connection', $entityManager['connection'])),
new Reference(sprintf('doctrine.orm.%s_configuration', $entityManager['name']))
$ormEmDef = new Definition('%doctrine.orm.entity_manager.class%', $ormEmArgs); ))
$ormEmDef->setFactoryClass('%doctrine.orm.entity_manager.class%'); ;
$ormEmDef->setFactoryMethod('create');
$container->setDefinition($entityManagerService, $ormEmDef);
$container->setAlias( $container->setAlias(
sprintf('doctrine.orm.%s_entity_manager.event_manager', $entityManager['name']), sprintf('doctrine.orm.%s_entity_manager.event_manager', $entityManager['name']),
new Alias($eventManagerID, false) new Alias(sprintf('doctrine.dbal.%s_connection.event_manager', $entityManager['connection']), false)
); );
} }

View File

@ -58,5 +58,7 @@
</service> </service>
<service id="doctrine.orm.configuration" class="%doctrine.orm.configuration.class%" abstract="true" public="false" /> <service id="doctrine.orm.configuration" class="%doctrine.orm.configuration.class%" abstract="true" public="false" />
<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" />
</services> </services>
</container> </container>

View File

@ -157,7 +157,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$arguments = $definition->getArguments(); $arguments = $definition->getArguments();
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]); $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]);
$this->assertEquals('database_connection', (string) $arguments[0]); $this->assertEquals('doctrine.dbal.default_connection', (string) $arguments[0]);
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[1]); $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[1]);
$this->assertEquals('doctrine.orm.default_configuration', (string) $arguments[1]); $this->assertEquals('doctrine.orm.default_configuration', (string) $arguments[1]);
@ -195,7 +195,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$this->assertEquals('create', $definition->getFactoryMethod()); $this->assertEquals('create', $definition->getFactoryMethod());
$this->assertDICConstructorArguments($definition, array( $this->assertDICConstructorArguments($definition, array(
new Reference('database_connection'), new Reference('doctrine.orm.default_configuration') new Reference('doctrine.dbal.default_connection'), new Reference('doctrine.orm.default_configuration')
)); ));
} }
@ -233,7 +233,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$this->assertEquals('create', $definition->getFactoryMethod()); $this->assertEquals('create', $definition->getFactoryMethod());
$this->assertDICConstructorArguments($definition, array( $this->assertDICConstructorArguments($definition, array(
new Reference('database_connection'), new Reference('doctrine.orm.default_configuration') new Reference('doctrine.dbal.default_connection'), new Reference('doctrine.orm.default_configuration')
)); ));
} }