2016-09-26 12 views
7

Tôi muốn chạy một phương thức khi mỗi lệnh bàn điều khiển duy nhất được chạy, Làm cách nào để tạo trình nghe cho tất cả các lệnh của bàn điều khiển trong lumen?Cách tạo trình nghe cho các lệnh trên bàn điều khiển

tôi đã cố gắng bằng cách tạo ra một người biết lắng nghe cho ConsoleCommandEvent, sự kiện này là bắn trong \Symfony\Component\Console\Application::doRunCommand, nhưng sự kiện phối chưa được đính kèm (đọc những nhận xét trên phương pháp: Nếu một điều phối sự kiện đã được gắn vào ứng dụng, sự kiện là cũng cử trong vòng đời của lệnh)

cập nhật Sử dụng sự kiện này:. Illuminate\Console\Events\ArtisanStarting có thể giúp đỡ để thực hiện công việc, nhưng nó là một sự kiện khác nhau. Bằng cách làm như vậy bất cứ lúc nào bạn chạy php artisan mã của bạn sẽ được thực thi cho dù bạn có chạy một lệnh thực hay không.

Trả lời

0

Nếu bạn chỉ cần thực thi một số phương thức khi mỗi lệnh được thực thi, bạn có thể nghe lớp này.

Illuminate\Console\Events\ArtisanStarting 

Nhưng tôi không biết cách lấy tên của mọi lệnh bên trong người nghe.

+0

Tôi đã tìm thấy sự kiện này hoạt động tốt. Nhưng vấn đề là như nó nói, nó được bắn khi nghệ nhân bắt đầu! vì vậy bất kỳ lúc nào bạn chạy 'php artisan' nó sẽ kích hoạt sự kiện, ngay cả khi bạn chỉ muốn xem 'php artisan --help'. Vì vậy, tôi sẽ cố gắng tìm cách để đính kèm điều phối viên. btw, tốt hơn rất nhiều so với giải pháp cuối cùng của bạn :) –

+0

@Mohammad Mehdi Habibi viết ở đây, nếu bạn tìm thấy smth. Tôi nghĩ bạn cần kiểm tra xem tham số có được gửi tới 'php artisan' và không chọn các tùy chọn như' --help' – mcklayin

+0

Rõ ràng bạn có thể nhận các tham số và blah blah để kiểm tra xem đó có phải là lệnh thực hay không và giải quyết vấn đề, nhưng nó không đẹp lắm, trừ khi chúng ta phải làm vậy. –

Các vấn đề liên quan