2012-10-12 67 views
0

我在symfony2中創建一個控制檯命令。我需要記錄一個我運行的執行線。如何獲得該線?symfony2獲取命令行執行

所以,如果我跑:

php app/console my-command fileName.txt --myoption=100 

我想獲得價值 「的PHP應用程序/安慰我的命令FILENAME.TXT --myoption = 100」

感謝所有幫助

回答

1

我將這個問題解釋爲:在Command代碼本身中,您想要確定在命令行上寫了什麼,以便最終執行該Symfony命令?

如果這是正確的,那麼我認爲它不可能完全準確。但是,你應該能夠這樣做是爲了讓[乎?]同樣的效果:

implode(" ", $_SERVER['argv']) 

例子:

class SomeCommand extends ContainerAwareCommand 
{ 
    protected function execute(InputInterface $input, OutputInterface $output) 
    {  
     $output->writeln(implode(" ", $_SERVER['argv'])); 
    } 
} 
1

如果你看一下ArgvInput類,你可能會注意到argv的值在holded者沒有任何吸氣的私人財產。基本上這意味着你無法訪問這些信息。當然,你可以直接使用$ _SERVER ['argv'],但這不是非常漂亮的解決方案。

所以,似乎沒有「乾淨」或「容易」的方式來實現你想要的東西。

但是,您可以訪問您需要的所有信息。

$this->getName(); // gets name of command (eg. "my-comand") 
$input->getArguments(); // gets all arguments (eg. "fileName.txt") 
$input->getOptions(); // get all options (eg. --myoption => 100) 

你可以把它放到一個字符串中。但是這是經過驗證的,所以如果你還需要記錄不好的命令(我的意思是錯誤的參數等),這不會通過考試。

+0

這也可以是一個解決方案。謝謝 –