فهرست منبع

Fixed autoloader leakage in tests

The autoloader for proxies is now unregistered on shutdown to avoid
having several instances registered at the same time in tests.
Christophe Coevoet 13 سال پیش
والد
کامیت
878c2399f1
1فایلهای تغییر یافته به همراه13 افزوده شده و 2 حذف شده
  1. 13 2
      src/Symfony/Bundle/DoctrineBundle/DoctrineBundle.php

+ 13 - 2
src/Symfony/Bundle/DoctrineBundle/DoctrineBundle.php

@@ -24,6 +24,8 @@ use Symfony\Component\HttpKernel\Bundle\Bundle;
  */
 class DoctrineBundle extends Bundle
 {
+    private $autoloader;
+
     public function build(ContainerBuilder $container)
     {
         parent::build($container);
@@ -44,7 +46,7 @@ class DoctrineBundle extends Bundle
             $dir = $this->container->getParameter('doctrine.orm.proxy_dir');
             $container =& $this->container;
 
-            spl_autoload_register(function($class) use ($namespace, $dir, &$container) {
+            $this->autoloader = function($class) use ($namespace, $dir, &$container) {
                 if (0 === strpos($class, $namespace)) {
                     $className = substr($class, strlen($namespace) +1);
                     $file = $dir.DIRECTORY_SEPARATOR.$className.'.php';
@@ -78,7 +80,16 @@ class DoctrineBundle extends Bundle
 
                     require $file;
                 }
-            });
+            };
+            spl_autoload_register($this->autoloader);
+        }
+    }
+
+    public function shutdown()
+    {
+        if (null !== $this->autoloader) {
+            spl_autoload_unregister($this->autoloader);
+            $this->autoloader = null;
         }
     }
 }