symfony2控制台的“空白”命令

时间:2013-08-18 16:47:07

标签: php symfony

我已经创建了一个小命令行工具来帮助我启动网站。它使用Symfony2控制台来帮助创建命令并添加一些结构。我想弄清楚的是,如果有办法,我可以创建一个“空白”或默认命令,所以如果你没有输入命令它只是默认为这个。一个例子可能有助于解释:

“普通”控制台命令如下所示:

php launch site foo

我想让它做与上面完全相同的事情:

php launch foo

我唯一能想到的是对应用程序>运行进程进行短路,并检查“foo”是否在我自己的命令列表中,如果不是则强制控制台运行站点foo。 关于这一点的糟糕的事情是,如果你只是拼错了一个不同的命令,系统只会尝试运行作为一个网站,而不是一个错误消息,你会得到一个错误,说它无法启动该网站(这是一个错误,但错误的错误,对用户没有帮助)。

也许我在控制台文档中遗漏了一些东西,但有没有办法去做我在这里尝试的东西?

1 个答案:

答案 0 :(得分:0)

所以我最终做的只是尝试我自己的匹配,如果我能找到命令,那么我正常运行应用程序,如果没有,我尝试启动该网站:

    if (!array_key_exists($argv[1], $list))
    {
        $cmd = $this->application->find('launch');
        $args = array(
            'command' => 'launch',
            'alias' => $argv[1]
        );

        $input = new ArrayInput($args);
        $output = new ConsoleOutput();
        $cmd->run($input, $output);
    }
    else
    {
        $this->application->run();
    }

它运作正常,它只是感觉有点meh,如果有人有它,我会接受其他建议。