| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | 
							- <?php
 - 
 - namespace JMS\DiExtraBundle\HttpKernel;
 - 
 - use Symfony\Component\Finder\Finder;
 - use Symfony\Component\HttpKernel\Bundle\BundleInterface;
 - use Symfony\Component\HttpKernel\KernelInterface;
 - use Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerInterface;
 - 
 - class ControllerInjectorsWarmer implements CacheWarmerInterface
 - {
 -     private $kernel;
 -     private $controllerResolver;
 - 
 -     public function __construct(KernelInterface $kernel, ControllerResolver $resolver)
 -     {
 -         $this->kernel = $kernel;
 -         $this->controllerResolver = $resolver;
 -     }
 - 
 -     public function warmUp($cacheDir)
 -     {
 -         // This avoids class-being-declared twice errors when the cache:clear
 -         // command is called. The controllers are not pre-generated in that case.
 -         if (basename($cacheDir) === $this->kernel->getEnvironment().'_new') {
 -             return;
 -         }
 - 
 -         $classes = $this->findControllerClasses();
 -         foreach ($classes as $class) {
 -             $this->controllerResolver->createInjector($class);
 -         }
 -     }
 - 
 -     public function isOptional()
 -     {
 -         return false;
 -     }
 - 
 -     private function findControllerClasses()
 -     {
 -         $dirs = array();
 -         foreach ($this->kernel->getBundles() as $bundle) {
 -             if (!is_dir($controllerDir = $bundle->getPath().'/Controller')) {
 -                 continue;
 -             }
 - 
 -             $dirs[] = $controllerDir;
 -         }
 - 
 -         foreach (Finder::create()->name('*Controller.php')->in($dirs)->files() as $file) {
 -             require_once $file->getRealPath();
 -         }
 - 
 -         // It is not so important if these controllers never can be reached with
 -         // the current configuration nor whether they are actually controllers.
 -         // Important is only that we do not miss any classes.
 -         return array_filter(get_declared_classes(), function($name) {
 -             return preg_match('/Controller\\\(.+)Controller$/', $name) > 0;
 -         });
 -     }
 - }
 
 
  |