2013-08-18 62 views
0

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

“正常”的控制台命令是这样的:

php launch site foo

我想使这个做如上同样的事情:

php launch foo

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

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

+0

您可以通过“php launch --site = TheSite foo”使网站变得可选。这是你要求的吗? – Cerad

+0

如果这是最好的,我可以做到这一点,但我真的很想做,没有可选的参数。 – JoeCianflone

回答

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

它工作正常,它只是感觉一点点,我可以接受其他建议,如果任何人有他们。