我们有一个 symfony 2 控制台命令应用程序。在一个命令(扩展\Symfony\Component\Console\Command\Command
)中,我们调用另一个命令。
$this->getApplication()->run(new StringInput('cache:flush'), new NullOutput());
在更新到最新的 Symfony 版本之前,这一切正常
但现在我在下面的 Symfony 函数 ( \Symfony\Component\Console\Input\ArgvInput::parseArgument()
)中遇到了异常
private function parseArgument($token)
{
$c = count($this->arguments); ## $c is 0 !
// if input is expecting another argument, add it
if ($this->definition->hasArgument($c)) {
$arg = $this->definition->getArgument($c);
$this->arguments[$arg->getName()] = $arg->isArray()? array($token) : $token;
// if last argument isArray(), append token to last argument
} elseif ($this->definition->hasArgument($c - 1) && $this->definition->getArgument($c - 1)->isArray()) {
$arg = $this->definition->getArgument($c - 1);
$this->arguments[$arg->getName()][] = $token;
// unexpected argument
} else {
throw new \RuntimeException('Too many arguments.'); ### this exception is thrown
}
}
这两个命令(原始命令dev:setup:run
和我们调用的命令cache:flush
)都不需要参数。