Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Symfony कंसोल कॉम्पोनेन्ट का उपयोग कर कस्टम CLI कमांड कैसे बनाएं

by
Difficulty:BeginnerLength:MediumLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

इस आर्टिकल में, हम यह पता लगाने जा रहे हैं कि आप Symfony कंसोल कॉम्पोनेन्ट का उपयोग करके अपने PHP ऍप्लिकेशन्स में कस्टम कमांड लाइन इंटरफ़ेस (CLI) कमांड कैसे बना सकते हैं। आवश्यक लाइब्रेरीज को इनस्टॉल करने के बाद, हम कंसोल कॉम्पोनेन्ट की कांसेप्ट को प्रदर्शित करने के लिए कुछ उदाहरण बनाएंगे।

वास्तव में, इस कॉम्पोनेन्ट का उपयोग CLI ऍप्लिकेशन्स को डेवेलोप करने के लिए कई PHP फ्रेमवर्क द्वारा किया जाता है, और कुछ लोकप्रिय फ्रेमवर्क पहले से ही इस कॉम्पोनेन्ट का उपयोग शुरुआती पॉइंट के रूप में कर रहे हैं।

कंसोल कॉम्पोनेन्ट क्या है?

Symfony कंसोल कॉम्पोनेन्ट आपको अपने PHP ऍप्लिकेशन्स में कस्टम CLI कमांड बनाने की अनुमति देता है। यदि आपने कभी Laravel या Symfony के साथ काम किया है, तो हो सकता है कि आप दिन-प्रति-दिन के संचालन को आसान बनाने के लिए प्रदान किए गए CLI टूल से अवगत रहें:

  • scaffolding कोड जेनेरेट करना
  • caches को क्लियर करना
  • एड-ऑन सर्विसेज को इनस्टॉल करना, इनेबल करना और डिसएबल करना
  • डेटाबेस माइग्रेशन चलाना
  • और भी अधिक

Laravel के मामले में, उदाहरण के लिए, यह artisan टूल के साथ आता है जो बहुत से यूटिलिटी कमांड प्रदान करता है जो हमारे जीवन को आसान बनाता है। आपको यह जानकर आश्चर्य हो सकता है कि artisan टूल Symfony कंसोल कॉम्पोनेन्ट के शीर्ष पर बनाया गया है! असल में, ऐसे कई फ्रेमवर्क हैं जो कंसोल कॉम्पोनेन्ट का लाभ उठाने के लिए उनके कमांड लाइन टूल का निर्माण करते हैं।

इस आर्टिकल में, हम कंसोल कॉम्पोनेन्ट की मूल बातें तलाशने जा रहे हैं ताकि आप अपने PHP ऍप्लिकेशन्स में कस्टम CLI कमांड बना सकें। आरंभ करने के लिए, हम आगे बढ़ेंगे और कंपोजर का उपयोग कर कंसोल कॉम्पोनेन्ट इनस्टॉल करेंगे। इंस्टालेशन के बाद, हम डेमोंस्ट्रेशन के उद्देश्यों के लिए कुछ उदाहरण तैयार करेंगे।

इंस्टालेशन और कॉन्फ़िगरेशन

इस सेक्शन में, हम आपके PHP ऍप्लिकेशन्स में CLI कमांड बनाने के लिए आवश्यक कंसोल कॉम्पोनेन्ट इनस्टॉल करने जा रहे हैं। मुझे लगता है कि आपने अपने सिस्टम में कंपोजर इनस्टॉल कर लिया है- हमें इसे कंसोल कॉम्पोनेन्ट इनस्टॉल करने की आवश्यकता होगी जो कि Packagist से उपलब्ध है।

एक बार जब आप कंपोजर इनस्टॉल कर लेंगे, तो आगे बढ़ें और निम्न कमांड का उपयोग कर कंसोल कॉम्पोनेन्ट इनस्टॉल करें।

उसने composer.json फ़ाइल बनाई होनी चाहिए, जो इस तरह दिखना चाहिए:

आइए निम्न की तरह दिखने के लिए composer.json फ़ाइल को संशोधित करें:

चूंकि हमने एक नई classmap एंट्री जोड़ दी है, चलिए आगे बढ़ें और निम्न कमांड को चलाकर कंपोज़र ऑटोलोडर अपडेट करें।

अब, आप src डायरेक्टरी के अंतर्गत क्लासेज को ऑटोलोड करने के लिए Console नेमस्पेस का उपयोग कर सकते हैं।

आपकी पहली HelloWorld कमांड

कंसोल कॉम्पोनेन्ट का उपयोग कर CLI कमांड बनाना दो-चरणीय प्रक्रिया है।

  • सबसे पहले, आपको एक कंसोल एप्लिकेशन बनाना होगा जो आवश्यक डेपेंडेन्सीज को लोड करता है और आपके कस्टम कमांड रजिस्टर करता है।
  • इसके बाद, आपको कंसोल एप्लिकेशन के साथ रजिस्टर सभी कमांड्स के लिए फाइलें बनाने की आवश्यकता है।

कंसोल एप्लिकेशन बनाएँ

इस section में, हम आगे बढ़ेंगे और हमारी कस्टम कंसोल एप्लिकेशन बनाएंगे।

हमारे कंसोल एप्लिकेशन की प्रस्तावित डायरेक्टरी संरचना इस तरह दिखती है।

आगे बढ़ें और निम्नलिखित कंटेंट के साथ मुख्य एप्लीकेशन फ़ाइल bin/console बनाएं। कृपया ध्यान दें कि कोई फ़ाइल एक्सटेंशन नहीं है, और यह भी सुनिश्चित करें कि यह एक्सेक्यूट करने योग्य भी है क्योंकि हमें इसे कमांड लाइन से चलाने की आवश्यकता होगी।

फ़ाइल #!/Usr/bin/env php में पहली लाइन यह सुनिश्चित करती है कि यह PHP एनवायरनमेंट के अंतर्गत चलती है। आगे बढ़ें और इसे चलाने की कोशिश करें और देखें कि यह कैसा चल रहा है।

बुरा नहीं है! कोड की केवल कुछ लाइन्स के साथ, आपके पास अपने निपटारे पर कस्टम कंसोल एप्लिकेशन चल रही है! लेकिन इस समय यह कुछ भी उपयोगी नहीं कर रही है। अगले सेक्शन में, हम देखेंगे कि आप कस्टम कमांड कैसे बना सकते हैं और इसे हमारे कस्टम कंसोल एप्लिकेशन के साथ रजिस्टर कर सकते हैं।

हैलो वर्ल्ड कमांड फ़ाइल बनाएं

आइए आगे बढ़ें और अपना पहला कस्टम कमांड बनाएं: HelloworldCommand। निम्नलिखित कंटेंट के साथ src/App/Commands/HelloworldCommand.php फ़ाइल बनाएं।

आपके कस्टम कमांड को बनाते समय आपको दो मुख्य मेथड्स बनाना चाहिए: configure और execute

जैसा कि नाम से पता चलता है, configure मेथड आपको अपने कमांड को कॉन्फ़िगर करने की अनुमति देती है ताकि आप कमांड के नाम, कमांड का डिस्क्रिप्शन, हेल्प टेक्स्ट और अन्य सेट कर सकें। यदि आप कमांड चलाते समय पैरामीटर पास करना चाहते हैं तो आप अपने कमांड के लिए आर्गुमेंट भी कॉन्फ़िगर कर सकते हैं।

उपर्युक्त उदाहरण में, कमांड नाम hello-world पर सेट है। साथ ही, हम यूजरनेम को पहले आर्गुमेंट के रूप में पास करना चाहते हैं, और इसलिए हमने इसे addArgument मेथड का उपयोग करके कॉन्फ़िगर किया है।

दूसरी तरफ, execute मेथड में कमांड का एप्लीकेशन लॉजिक होता है। हमारे मामले में, हमने हैलो वर्ल्ड को कमांड के आउटपुट के रूप में प्रदर्शित करके इसे बहुत सरल रखा है।

इससे पहले कि आप आगे बढ़ सकें और वास्तव में इस कमांड को चलाएं, आपको इसे कंसोल एप्लिकेशन के साथ रजिस्टर करना होगा जिसे हमने पिछले सेक्शन में बनाया है। आइए निम्न को देखने के लिए bin/console फ़ाइल को जल्दी से संशोधित करें।

जैसा कि आप देख सकते हैं, हमने HelloworldCommand कमांड जोड़ने के लिए Application ऑब्जेक्ट के add मेथड का उपयोग किया है। आइए सभी उपलब्ध कमांडों को तुरंत सूचीबद्ध करें।

जैसा कि अपेक्षित है, उपलब्ध कमांड की सूची में hello-world कमांड दिखाई देती है! आगे बढ़ो और इसे चलाओ!

तो इस तरह आप मूल कमांड इनस्टॉल कर सकते हैं!

एक असली दुनिया का उदाहरण-कैश को क्लियर करने की कमांड

पिछले section में, हमने कंसोल कॉम्पोनेन्ट के कांसेप्ट को प्रदर्शित करने के लिए hello-world कमांड बनायीं थी। इस सेक्शन में, हम आगे बढ़ेंगे और वास्तविक दुनिया का उदाहरण तैयार करेंगे जो दर्शाता है कि आप अपने एप्लीकेशन में कैश को साफ़ करने के लिए एक कमांड कैसे बना सकते हैं।

Clear Cache Command फ़ाइल बनाएं

आगे बढ़ें और निम्नलिखित कंटेंट के साथ src/App/Commands/ClearcacheCommand.php फ़ाइल बनाएं।

configure मेथड काफी सामान ही है, सिवाय इसके कि हमने हमारे कमांड में एक ऑप्शन जोड़ने के लिए addOption मेथड का उपयोग किया है। इस प्रकार, आप --groups पैरामीटर का उपयोग करके ग्रुप वैल्यूज को पारित कर सकते हैं।

दूसरी तरफ, execute मेथड में हमारे कमांड का एप्लीकेशन लॉजिक होता है।

यदि आप विशिष्ट ग्रुप्स के कैश को साफ़ करना चाहते हैं, तो आपको --group पैरामीटर के साथ ग्रुप नामों को पारित करने की आवश्यकता है। दूसरी तरफ, यदि आप सभी कैश साफ़ करना चाहते हैं तो --group पैरामीटर को छोड़ दें। आपने देखा होगा कि हमने addOption मेथड के तीसरे आर्गुमेंट में InputOption::VALUE_OPTIONAL वैल्यू प्रदान करके --group पैरामीटर वैकल्पिक रखा है।

कंसोल एप्लीकेशन के साथ रजिस्ट्रेशन और टेस्टिंग

आगे बढ़ने से पहले और वास्तव में इसे चलाने से पहले, आइए हमारे कंसोल एप्लिकेशन के साथ कमांड रजिस्टर करें।

अब, आगे बढ़ें और सभी कैश साफ़ करने के लिए bin/console clear-cache कमांड चलाएं!

अगला, यदि आप विशिष्ट कैश साफ़ करना चाहते हैं, तो आप इस तरह कुछ कोशिश कर सकते हैं।

बेशक, आपको कैश साफ़ करने के लिए वास्तविक लॉजिक को लागू करने की आवश्यकता होगी, लेकिन इसे एक अच्छे स्टार्टिंग पॉइंट के रूप में कार्य करना चाहिए।

निष्कर्ष

आज, हम Symfony फ्रेमवर्क द्वारा प्रदान किए गए लोकप्रिय कंपोनेंट्स में से एक के माध्यम से गए: Console Component। यह वास्तव में एक उपयोगी कॉम्पोनेन्ट है, क्या आप अपना स्वयं का CLI एप्लीकेशन डेवेलोप करना चाहते हैं जो आपको आसानी से अपने दिन-प्रतिदिन यूटिलिटी टास्कस को एक्सेक्यूट करने में मदद करता है।

पहले हाफ में, हम कॉम्पोनेन्ट की इंस्टालेशन और कॉन्फ़िगरेशन के माध्यम से चले। फिर, दूसरे हाफ में, हमने कंसोल कमांड के कुछ उदाहरण बनाए।

हमें नीचे दिए गए कमैंट्स में बताएं कि आप क्या सोचते हैं।

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.