2016-09-26 5 views
7

단일 콘솔 명령을 실행할 때마다 메서드를 실행하고 싶습니다. 루멘의 모든 콘솔 명령에 대한 수신기를 만들려면 어떻게해야합니까? 이벤트 디스패처가 응용 프로그램에 연결되어있는 경우 이벤트는, :콘솔 명령에 대한 수신기를 만드는 방법

내가 ConsoleCommandEvent에 대한 리스너를 작성하여 시도,이 이벤트는 방법 위의 코멘트를 읽어 (\Symfony\Component\Console\Application::doRunCommand에서 발사되어 있지만, 이벤트 발송자가 부착되지 않은 Illuminate\Console\Events\ArtisanStarting이 일을하는 데 도움이 수 있지만 그것은 다른 이벤트입니다.이 이벤트를 사용하여)

업데이트 명령의 생명주기 동안 파견. 이렇게하면 언제든지 php artisan을 실행하여 실제 명령을 실행하든 실행하지 않든 코드가 실행됩니다.

답변

0

각 명령이 실행될 때마다 일부 메서드 만 실행하면이 클래스를 수신 할 수 있습니다.

Illuminate\Console\Events\ArtisanStarting 

그러나 리스너 내부의 모든 명령 이름을 얻는 방법을 모르겠습니다.

+0

이미 잘 작동하는이 이벤트를 발견했습니다. 그러나 문제는 장인이 시작할 때 발사된다는 것입니다. 그래서'php artisan'을 실행할 때마다'php artisan --help' 만 보더라도 이벤트가 발생합니다. 그래서, 나는 디스패처를 첨부하는 방법을 찾으려고 노력할 것이다. btw, 귀하의 마지막 솔루션보다 훨씬 더 :) –

+0

@ 모함마드 Mehdi Habibi 글씨, 만약 당신이 smth을 발견했다. 나는 php artisan에게 매개 변수가 보내 졌는지 확인하고'--help'와 같은 옵션을 체크하지 말아야한다고 생각한다. – mcklayin

+0

분명히 매개 변수를 얻을 수 있고 실제 명령인지 아닌지를 확인하고 문제를 해결할 수있다. 우리가 그렇게하지 않으면 그렇게 좋은 것은 아닙니다. –