/** * Logic that will be executed when command is visited * * @param AbstractCommand $command * @param int $depth * * @return mixed */ function process(AbstractCommand $command, $depth = 0) { if ($command->getArgument() != $this->argumentsContainer->getArgumentAt($depth)) { return; } if (count($command->getChildCommands()) == 0) { $command->execute($this->argumentsContainer); $this->stop(); } elseif ($this->argumentsContainer->getArgumentsCount() - 1 == $depth) { $command->execute($this->argumentsContainer); $this->stop(); } }