2013-08-18 81 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(); 
    } 

它工作正常,它只是感覺一點點,我可以接受其他建議,如果任何人有他們。