Forráskód Böngészése

[HttpKernel] changed the way compiled classes are managed to be sure that they are included before the Kernel is booted

If not, as classes can be loaded during the boot, there is no way to be sure that
a class will not be already loaded by a third party bundle.

If the Kernel is already booted, we don't included the compiled classes.
Fabien Potencier 14 éve
szülő
commit
e16c226a5c
1 módosított fájl, 4 hozzáadás és 6 törlés
  1. 4 6
      src/Symfony/Component/HttpKernel/Kernel.php

+ 4 - 6
src/Symfony/Component/HttpKernel/Kernel.php

@@ -397,12 +397,8 @@ abstract class Kernel implements KernelInterface
      */
      */
     public function loadClassCache($name = 'classes', $extension = '.php')
     public function loadClassCache($name = 'classes', $extension = '.php')
     {
     {
-        if (!$this->booted) {
-            $this->boot();
-        }
-
-        if ($this->container->hasParameter('kernel.compiled_classes')) {
-            ClassCollectionLoader::load($this->container->getParameter('kernel.compiled_classes'), $this->getCacheDir(), $name, $this->debug, false, $extension);
+        if (!$this->booted && file_exists($this->getCacheDir().'/classes.map')) {
+            ClassCollectionLoader::load(include($this->getCacheDir().'/classes.map'), $this->getCacheDir(), $name, $this->debug, false, $extension);
         }
         }
     }
     }
 
 
@@ -645,6 +641,8 @@ abstract class Kernel implements KernelInterface
         $container->addCompilerPass(new AddClassesToCachePass($this));
         $container->addCompilerPass(new AddClassesToCachePass($this));
         $container->compile();
         $container->compile();
 
 
+        file_put_contents($this->getCacheDir().'/classes.map', sprintf('<?php return %s;', var_export($container->getParameter('kernel.compiled_classes'), true)));
+
         return $container;
         return $container;
     }
     }