Browse Source

[DoctrineBundle] removed DoctrineExtension constructor

Fabien Potencier 15 years ago
parent
commit
0f30e539b1

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

@@ -30,16 +30,6 @@ class DoctrineExtension extends Extension
         'dbal' => 'dbal.xml',
         'orm'  => 'orm.xml',
     );
-    protected $bundleDirs;
-    protected $bundles;
-    protected $kernelCacheDir;
-
-    public function __construct(array $bundleDirs, array $bundles, $kernelCacheDir)
-    {
-        $this->bundleDirs = $bundleDirs;
-        $this->bundles = $bundles;
-        $this->kernelCacheDir = $kernelCacheDir;
-    }
 
     /**
      * Loads the DBAL configuration.
@@ -69,7 +59,7 @@ class DoctrineExtension extends Extension
      */
     public function ormLoad($config, ContainerBuilder $container)
     {
-        $this->createOrmProxyDirectory();
+        $this->createOrmProxyDirectory($container->getParameter('kernel.cache_dir'));
         $this->loadOrmDefaults($config, $container);
         $this->loadOrmEntityManagers($config, $container);
     }
@@ -196,10 +186,10 @@ class DoctrineExtension extends Extension
     /**
      * Create the Doctrine ORM Entity proxy directory
      */
-    protected function createOrmProxyDirectory()
+    protected function createOrmProxyDirectory($tmpDir)
     {
         // Create entity proxy directory
-        $proxyCacheDir = $this->kernelCacheDir . '/doctrine/orm/Proxies';
+        $proxyCacheDir = $tmpDir.'/doctrine/orm/Proxies';
         if (!is_dir($proxyCacheDir)) {
             if (false === @mkdir($proxyCacheDir, 0777, true)) {
                 die(sprintf('Unable to create the Doctrine Proxy directory (%s)', dirname($proxyCacheDir)));
@@ -265,7 +255,7 @@ class DoctrineExtension extends Extension
     protected function loadOrmEntityManager(array $entityManager, ContainerBuilder $container)
     {
         $defaultEntityManager = $container->getParameter('doctrine.orm.default_entity_manager');
-        $proxyCacheDir = $this->kernelCacheDir . '/doctrine/orm/Proxies';
+        $proxyCacheDir = $container->getParameter('kernel.cache_dir').'/doctrine/orm/Proxies';
 
         $ormConfigDef = new Definition('Doctrine\ORM\Configuration');
         $container->setDefinition(sprintf('doctrine.orm.%s_configuration', $entityManager['name']), $ormConfigDef);
@@ -338,9 +328,9 @@ class DoctrineExtension extends Extension
         // configure metadata driver for each bundle based on the type of mapping files found
         $mappingDriverDef = new Definition('%doctrine.orm.metadata.driver_chain_class%');
         $bundleEntityMappings = array();
-        $bundleDirs = $this->bundleDirs;
+        $bundleDirs = $container->getParameter('kernel.bundle_dirs');
         $aliasMap = array();
-        foreach ($this->bundles as $className) {
+        foreach ($container->getParameter('kernel.bundles') as $className) {
             $tmp = dirname(str_replace('\\', '/', $className));
             $namespace = str_replace('/', '\\', dirname($tmp));
             $class = basename($tmp);
@@ -464,7 +454,7 @@ class DoctrineExtension extends Extension
     protected function findBundleSubpaths($path, ContainerBuilder $container)
     {
         $dirs = array();
-        foreach ($this->bundles as $bundle) {
+        foreach ($container->getParameter('kernel.bundles') as $bundle) {
             $reflection = new \ReflectionClass($bundle);
             if (is_dir($dir = dirname($reflection->getFilename()).'/'.$path)) {
                 $dirs[] = $dir;

+ 1 - 5
src/Symfony/Bundle/DoctrineBundle/DoctrineBundle.php

@@ -33,10 +33,6 @@ class DoctrineBundle extends Bundle
      */
     public function buildContainer(ParameterBagInterface $parameterBag)
     {
-        ContainerBuilder::registerExtension(new DoctrineExtension(
-            $parameterBag->get('kernel.bundle_dirs'),
-            $parameterBag->get('kernel.bundles'),
-            $parameterBag->get('kernel.cache_dir')
-        ));
+        ContainerBuilder::registerExtension(new DoctrineExtension());
     }
 }

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

@@ -14,6 +14,7 @@ namespace Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection;
 use Symfony\Bundle\DoctrineBundle\Tests\TestCase;
 use Symfony\Bundle\DoctrineBundle\DependencyInjection\DoctrineExtension;
 use Symfony\Components\DependencyInjection\ContainerBuilder;
+use Symfony\Components\DependencyInjection\ParameterBag\ParameterBag;
 use Symfony\Components\DependencyInjection\Loader\XmlFileLoader;
 use Symfony\Components\DependencyInjection\Loader\YamlFileLoader;
 
@@ -23,8 +24,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testDbalLoad()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader();
+        $container = $this->getContainer();
+        $loader = new DoctrineExtension();
 
         $loader->dbalLoad(array(), $container);
         $this->assertEquals('Symfony\\Bundle\\DoctrineBundle\\DataCollector\\DoctrineDataCollector', $container->getParameter('doctrine.data_collector.class'), '->dbalLoad() loads the dbal.xml file if not already loaded');
@@ -36,8 +37,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $loader->dbalLoad(array(), $container);
         $this->assertEquals('foo', $container->getParameter('doctrine.dbal.default_connection'), '->dbalLoad() overrides existing configuration options');
 
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader();
+        $container = $this->getContainer();
+        $loader = new DoctrineExtension();
         $loader->dbalLoad(array('password' => 'foo'), $container);
 
         $arguments = $container->getDefinition('doctrine.dbal.default_connection')->getArguments();
@@ -53,8 +54,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testDbalLoadFromXmlMultipleConnections()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader();
+        $container = $this->getContainer();
+        $loader = new DoctrineExtension();
         $container->registerExtension($loader);
 
         $loadXml = new XmlFileLoader($container, __DIR__.'/Fixtures/config/xml');
@@ -73,8 +74,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
         // doctrine.dbal.sqlite_connection
         $arguments = $container->getDefinition('doctrine.dbal.sqlite_connection')->getArguments();
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader();
+        $container = $this->getContainer();
+        $loader = new DoctrineExtension();
         $container->registerExtension($loader);
 
         $loadXml = new XmlFileLoader($container, __DIR__.'/Fixtures/config/xml');
@@ -94,8 +95,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testDependencyInjectionConfigurationDefaults()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader();
+        $container = $this->getContainer();
+        $loader = new DoctrineExtension();
 
         $loader->dbalLoad(array(), $container);
         $loader->ormLoad(array(), $container);
@@ -169,8 +170,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testSingleEntityManagerConfiguration()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader();
+        $container = $this->getContainer();
+        $loader = new DoctrineExtension();
 
         $loader->dbalLoad(array(), $container);
         $loader->ormLoad(array(), $container);
@@ -191,8 +192,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testLoadSimpleSingleConnection()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader();
+        $container = $this->getContainer();
+        $loader = new DoctrineExtension();
         $container->registerExtension($loader);
 
         $loader->dbalLoad(array(), $container);
@@ -225,8 +226,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testLoadSingleConnection()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader();
+        $container = $this->getContainer();
+        $loader = new DoctrineExtension();
         $container->registerExtension($loader);
 
         $this->loadFromFile($container, 'orm_service_single_entity_manager');
@@ -256,8 +257,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testLoadMultipleConnections()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader();
+        $container = $this->getContainer();
+        $loader = new DoctrineExtension();
         $container->registerExtension($loader);
 
         $this->loadFromFile($container, 'orm_service_multiple_entity_managers');
@@ -318,8 +319,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testBundleEntityAliases()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader();
+        $container = $this->getContainer();
+        $loader = new DoctrineExtension();
 
         $loader->dbalLoad(array(), $container);
         $loader->ormLoad(array(), $container);
@@ -332,8 +333,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testYamlBundleMappingDetection()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader('YamlBundle');
+        $container = $this->getContainer('YamlBundle');
+        $loader = new DoctrineExtension();
 
         $loader->dbalLoad(array(), $container);
         $loader->ormLoad(array(), $container);
@@ -350,8 +351,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testXmlBundleMappingDetection()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader('XmlBundle');
+        $container = $this->getContainer('XmlBundle');
+        $loader = new DoctrineExtension();
 
         $loader->dbalLoad(array(), $container);
         $loader->ormLoad(array(), $container);
@@ -368,8 +369,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testAnnotationsBundleMappingDetection()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader('AnnotationsBundle');
+        $container = $this->getContainer('AnnotationsBundle');
+        $loader = new DoctrineExtension();
 
         $loader->dbalLoad(array(), $container);
         $loader->ormLoad(array(), $container);
@@ -386,8 +387,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testEntityManagerMetadataCacheDriverConfiguration()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader();
+        $container = $this->getContainer();
+        $loader = new DoctrineExtension();
         $container->registerExtension($loader);
 
         $this->loadFromFile($container, 'orm_service_multiple_entity_managers');
@@ -403,8 +404,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testEntityManagerMemcacheMetadataCacheDriverConfiguration()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader();
+        $container = $this->getContainer();
+        $loader = new DoctrineExtension();
         $container->registerExtension($loader);
 
         $this->loadFromFile($container, 'orm_service_simple_single_entity_manager');
@@ -429,8 +430,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
     public function testDependencyInjectionImportsOverrideDefaults()
     {
-        $container = new ContainerBuilder();
-        $loader = $this->getDoctrineExtensionLoader();
+        $container = $this->getContainer();
+        $loader = new DoctrineExtension();
         $container->registerExtension($loader);
 
         $this->loadFromFile($container, 'orm_imports');
@@ -441,11 +442,14 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $this->assertTrue($container->getParameter('doctrine.orm.auto_generate_proxy_classes'));
     }
 
-    protected function getDoctrineExtensionLoader($bundle = 'YamlBundle')
+    protected function getContainer($bundle = 'YamlBundle')
     {
         require_once __DIR__.'/Fixtures/Bundles/'.$bundle.'/'.$bundle.'.php';
-        $bundleDirs = array('DoctrineBundle\\Tests\\DependencyInjection\\Fixtures\\Bundles' => __DIR__.'/Fixtures/Bundles');
-        $bundles = array('DoctrineBundle\\Tests\DependencyInjection\\Fixtures\\Bundles\\'.$bundle.'\\'.$bundle);
-        return new DoctrineExtension($bundleDirs, $bundles, sys_get_temp_dir());
+
+        return new ContainerBuilder(new ParameterBag(array(
+            'kernel.bundle_dirs' => array('DoctrineBundle\\Tests\\DependencyInjection\\Fixtures\\Bundles' => __DIR__.'/Fixtures/Bundles'),
+            'kernel.bundles'     => array('DoctrineBundle\\Tests\DependencyInjection\\Fixtures\\Bundles\\'.$bundle.'\\'.$bundle),
+            'kernel.cache_dir'   => sys_get_temp_dir(),
+        )));
     }
 }