2016-09-26 64 views
7

我想在運行每個控制檯命令時運行方法,如何爲流明中的所有控制檯命令創建偵聽器?如何爲控制檯命令創建偵聽器

我試圖通過創建ConsoleCommandEvent監聽器,這個事件在\Symfony\Component\Console\Application::doRunCommand解僱,但事件調度尚未附加(讀上述方法的註釋: 如果事件調度員已經連接到應用程序,事件該命令的生命週期中也派出

更新使用此事件:Illuminate\Console\Events\ArtisanStarting可以幫助做工作,但它是一個不同的事件。通過這樣做,無論您運行的是否是實際的命令,您的代碼都將被執行。

回答

0

如果您只需要在執行每個命令時執行某種方法,則可以聽該課程。

Illuminate\Console\Events\ArtisanStarting 

但我不知道如何獲取監聽器中的每個命令的名稱。

+0

我已經發現這個事件效果很好。但問題是,正如它所說的,當工匠開始時它就會被解僱!所以任何時候你運行'php artisan'都會觸發事件,即使你只是想看看'php artisan --help'。所以,我會嘗試找到一種方式來附加調度員。順便說一句,比你最後的解決方案好很多:) –

+0

@Mohammad Mehdi Habibi寫在這裏,如果你發現smth。我認爲你需要檢查參數是否發送到'php artisan'並且不檢查選項如'--help' – mcklayin

+0

顯然你可以得到參數和等等等等來檢查它是否是實際的命令並解決問題,但它不是很好,除非我們必須這樣做。 –

相關問題