2016-09-26 61 views
7

Chcę uruchomić metodę, gdy uruchamiane jest każde polecenie konsoli. Jak utworzyć detektor dla wszystkich poleceń konsoli w lumenach?Jak utworzyć detektor dla poleceń konsoli?

Próbowałem tworząc detektor ConsoleCommandEvent, to wydarzenie jest wypalana w \Symfony\Component\Console\Application::doRunCommand, ale dyspozytor wydarzenie nie zostało dołączone (czytaj komentarz powyższej metody: Jeśli dyspozytor zdarzenie zostało dołączone do wniosku, zdarzenia są również wysyłane w ciągu cyklu życia komendy)

Aktualizacja Stosując tę ​​imprezę. Illuminate\Console\Events\ArtisanStarting może pomóc, aby wykonać zadanie, ale to jest inna impreza. Robiąc to za każdym razem, gdy uruchomisz php artisan twój kod zostanie wykonany bez względu na to, czy uruchomisz faktyczne polecenie, czy nie.

Odpowiedz

0

Jeśli potrzebujesz wykonać tylko jedną metodę, gdy wykonano każde polecenie, możesz słuchać tej klasy.

Illuminate\Console\Events\ArtisanStarting 

Ale nie wiem, jak uzyskać nazwę każdego polecenia wewnątrz słuchacza.

+0

Już znalazłem to wydarzenie, które działa dobrze. Problem polega jednak na tym, że jak to się mówi, zostaje wyrzucony, gdy zaczyna się rzemieślnik! więc za każdym razem, gdy uruchomisz 'php rzemieślnik', uruchamia on zdarzenie, nawet jeśli chcesz po prostu zobaczyć 'php artisan --help'. Tak więc postaram się znaleźć sposób na dołączenie dyspozytora. btw, o wiele lepiej niż twoje ostatnie rozwiązanie :) –

+0

@Mohammad Mehdi Habibi napisz tutaj, jeśli znalazłeś smth. Myślę, że musisz sprawdzić, czy parametr wysłany do 'php rzemieślnika' i nie zaznaczaj opcji takich jak' --help' – mcklayin

+0

Oczywiście możesz uzyskać parametry i bla bla, aby sprawdzić, czy jest to rzeczywiste polecenie, czy nie i rozwiązać problem, ale nie jest to aż tak miłe, chyba że musimy. –