/** * Console constructor. * * @param string $name Console name. * @param Input\Cli $input Cli input object. * @param CliOutput $output Cli output object. * @param AbstractCommand $parent Parent Console. * * @throws \LogicException */ public function __construct($name = null, Input\Cli $input = null, CliOutput $output = null, AbstractCommand $parent = null) { $this->globalOptions = OptionSet::getInstance(); parent::__construct($name, $input, $output, $parent); $ref = new \ReflectionClass($this); // Register sub commands $dirs = new \DirectoryIterator(dirname($ref->getFileName())); foreach ($dirs as $dir) { if (!$dir->isDir() || $dirs->isDot()) { continue; } $name = ucfirst($dir->getBasename()); $class = $ref->getNamespaceName() . '\\' . $name . "\\" . $name . 'Command'; if (class_exists($class) && $class::$isEnabled) { $this->addCommand(new $class()); } } }