/** * 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()); } } } } }