2016-09-26 8 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' देखना चाहते हों। तो, मैं प्रेषक संलग्न करने का एक तरीका खोजने की कोशिश करूंगा। बीटीडब्ल्यू, आपके पिछले समाधान से काफी बेहतर :) –

+0

@ मोहम्मद मेहदी हबीबी यहां लिखते हैं, अगर आपको गंध मिलती है। मुझे लगता है कि आपको यह जांचने की आवश्यकता है कि क्या पैरामीटर 'php artisan' को भेजा गया है और '--help' – mcklayin

+0

जैसे विकल्पों की जांच न करें जाहिर है आप यह जांचने के लिए पैरामीटर और ब्ला ब्लाह प्राप्त कर सकते हैं कि यह वास्तविक आदेश है या नहीं, और समस्या हल करें, लेकिन यह इतना अच्छा नहीं है, जब तक हमें नहीं करना है। –

संबंधित मुद्दे