Ejemplo n.º 1
0
 /**
  * Finds and registers Commands in BackBee Standard application
  *
  * @{inheritdoc}
  * @param BackBee\Console\Console $console An Application instance
  */
 public function registerCommands(Console $console)
 {
     parent::registerCommands($console);
     $commandNamespace = 'BackBee\\Standard\\Command';
     $directories = $this->getCommandDirectories();
     foreach ($directories as $directory) {
         if (is_dir($directory)) {
             /* register the namespace */
             $this->getAutoloader()->register()->registerNamespace($commandNamespace, $directory);
             $files = (new Finder())->files()->name('*Command.php')->in($directory);
             foreach ($files as $file) {
                 if ($relativePath = $file->getRelativePath()) {
                     $commandNamespace .= '\\' . strtr($relativePath, '/', '\\');
                 }
                 $reflectionClass = new \ReflectionClass($commandNamespace . '\\' . $file->getBasename('.php'));
                 if ($reflectionClass->isSubclassOf('BackBee\\Console\\AbstractCommand') && !$reflectionClass->isAbstract() && !$reflectionClass->getConstructor()->getNumberOfRequiredParameters()) {
                     $console->add($reflectionClass->newInstance());
                 }
             }
         }
     }
 }