Selaa lähdekoodia

Refactored the config to use the right parameters instead of using the default values

Christophe Coevoet 14 vuotta sitten
vanhempi
commit
f37a2a9513

+ 12 - 7
src/Symfony/Bundle/DoctrineBundle/DependencyInjection/DoctrineExtension.php

@@ -165,7 +165,7 @@ class DoctrineExtension extends AbstractDoctrineExtension
     {
         $configServiceName = sprintf('doctrine.orm.%s_configuration', $entityManager['name']);
 
-        $ormConfigDef = new Definition('Doctrine\ORM\Configuration');
+        $ormConfigDef = new Definition('%doctrine.orm.configuration_class%');
         $ormConfigDef->setPublic(false);
         $container->setDefinition($configServiceName, $ormConfigDef);
 
@@ -187,10 +187,11 @@ class DoctrineExtension extends AbstractDoctrineExtension
         }
 
         $entityManagerService = sprintf('doctrine.orm.%s_entity_manager', $entityManager['name']);
-        $connectionName = isset($entityManager['connection']) ? $entityManager['connection'] : $entityManager['name'];
+        $connectionId = isset($entityManager['connection']) ? sprintf('doctrine.dbal.%s_connection', $entityManager['connection']) : 'database_connection';
+        $eventManagerID = isset($entityManager['connection']) ? sprintf('doctrine.dbal.%s_connection.event_manager', $entityManager['connection']) : 'doctrine.dbal.event_manager';
 
         $ormEmArgs = array(
-            new Reference(sprintf('doctrine.dbal.%s_connection', $connectionName)),
+            new Reference($connectionId),
             new Reference(sprintf('doctrine.orm.%s_configuration', $entityManager['name']))
         );
         $ormEmDef = new Definition('%doctrine.orm.entity_manager_class%', $ormEmArgs);
@@ -201,7 +202,7 @@ class DoctrineExtension extends AbstractDoctrineExtension
 
         $container->setAlias(
             sprintf('doctrine.orm.%s_entity_manager.event_manager', $entityManager['name']),
-            new Alias(sprintf('doctrine.dbal.%s_connection.event_manager', $connectionName), false)
+            new Alias($eventManagerID, false)
         );
     }
 
@@ -304,10 +305,14 @@ class DoctrineExtension extends AbstractDoctrineExtension
     protected function getEntityManagerCacheDefinition(array $entityManager, $cacheDriver, ContainerBuilder $container)
     {
         if ('memcache' === $cacheDriver['type']) {
-            $cacheDef = new Definition('%doctrine.orm.cache.memcache_class%');
-            $memcacheInstance = new Definition('%doctrine.orm.cache.memcache_instance_class%');
+            $memcacheClass = !empty ($cacheDriver['class']) ? $cacheDriver['class'] : '%doctrine.orm.cache.memcache_class%';
+            $memcacheInstanceClass = !empty ($cacheDriver['instance_class']) ? $cacheDriver['instance_class'] : '%doctrine.orm.cache.memcache_instance_class%';
+            $memcacheHost = !empty ($cacheDriver['host']) ? $cacheDriver['host'] : '%doctrine.orm.cache.memcache_host%';
+            $memcachePort = !empty ($cacheDriver['port']) ? $cacheDriver['port'] : '%doctrine.orm.cache.memcache_port%';
+            $cacheDef = new Definition($memcacheClass);
+            $memcacheInstance = new Definition($memcacheInstanceClass);
             $memcacheInstance->addMethodCall('connect', array(
-                '%doctrine.orm.cache.memcache_host%', '%doctrine.orm.cache.memcache_port%'
+                $memcacheHost, $memcachePort
             ));
             $container->setDefinition(sprintf('doctrine.orm.%s_memcache_instance', $entityManager['name']), $memcacheInstance);
             $cacheDef->addMethodCall('setMemcache', array(new Reference(sprintf('doctrine.orm.%s_memcache_instance', $entityManager['name']))));

+ 6 - 6
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php

@@ -160,7 +160,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
         $arguments = $definition->getArguments();
         $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]);
-        $this->assertEquals('doctrine.dbal.default_connection', (string) $arguments[0]);
+        $this->assertEquals('database_connection', (string) $arguments[0]);
         $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[1]);
         $this->assertEquals('doctrine.orm.default_configuration', (string) $arguments[1]);
 
@@ -198,7 +198,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $this->assertArrayHasKey('doctrine.orm.entity_manager', $definition->getTags());
 
         $this->assertDICConstructorArguments($definition, array(
-            new Reference('doctrine.dbal.default_connection'), new Reference('doctrine.orm.default_configuration')
+            new Reference('database_connection'), new Reference('doctrine.orm.default_configuration')
         ));
     }
 
@@ -238,7 +238,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $this->assertArrayHasKey('doctrine.orm.entity_manager', $definition->getTags());
 
         $this->assertDICConstructorArguments($definition, array(
-            new Reference('doctrine.dbal.default_connection'), new Reference('doctrine.orm.default_configuration')
+            new Reference('database_connection'), new Reference('doctrine.orm.default_configuration')
         ));
     }
 
@@ -489,15 +489,15 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $container->compile();
 
         $definition = $container->getDefinition('doctrine.orm.default_metadata_cache');
-        $this->assertDICDefinitionClass($definition, '%doctrine.orm.cache.memcache_class%');
+        $this->assertDICDefinitionClass($definition, 'Doctrine\Common\Cache\MemcacheCache');
         $this->assertDICDefinitionMethodCallOnce($definition, 'setMemcache',
             array(new Reference('doctrine.orm.default_memcache_instance'))
         );
 
         $definition = $container->getDefinition('doctrine.orm.default_memcache_instance');
-        $this->assertDICDefinitionClass($definition, '%doctrine.orm.cache.memcache_instance_class%');
+        $this->assertDICDefinitionClass($definition, 'Memcache');
         $this->assertDICDefinitionMethodCallOnce($definition, 'connect', array(
-            '%doctrine.orm.cache.memcache_host%', '%doctrine.orm.cache.memcache_port%'
+            'localhost', '11211'
         ));
     }