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 require symfony/console
उसने composer.json फ़ाइल बनाई होनी चाहिए, जो इस तरह दिखना चाहिए:
{ "require": { "symfony/console": "^4.0" } }
आइए निम्न की तरह दिखने के लिए composer.json फ़ाइल को संशोधित करें:
{ "require": { "symfony/console": "^4.0" }, "autoload": { "psr-4": { "Console\\": "src" }, "classmap": ["src"] } }
चूंकि हमने एक नई classmap
एंट्री जोड़ दी है, चलिए आगे बढ़ें और निम्न कमांड को चलाकर कंपोज़र ऑटोलोडर अपडेट करें।
$composer dump -o
अब, आप src डायरेक्टरी के अंतर्गत क्लासेज को ऑटोलोड करने के लिए Console
नेमस्पेस का उपयोग कर सकते हैं।
आपकी पहली HelloWorld कमांड
कंसोल कॉम्पोनेन्ट का उपयोग कर CLI कमांड बनाना दो-चरणीय प्रक्रिया है।
- सबसे पहले, आपको एक कंसोल एप्लिकेशन बनाना होगा जो आवश्यक डेपेंडेन्सीज को लोड करता है और आपके कस्टम कमांड रजिस्टर करता है।
- इसके बाद, आपको कंसोल एप्लिकेशन के साथ रजिस्टर सभी कमांड्स के लिए फाइलें बनाने की आवश्यकता है।
कंसोल एप्लिकेशन बनाएँ
इस section में, हम आगे बढ़ेंगे और हमारी कस्टम कंसोल एप्लिकेशन बनाएंगे।
हमारे कंसोल एप्लिकेशन की प्रस्तावित डायरेक्टरी संरचना इस तरह दिखती है।
|-- bin | `-- console |-- composer.json |-- composer.lock |-- src | `-- App | `-- Commands | |-- ClearcacheCommand.php | `-- HelloworldCommand.php `-- vendor
आगे बढ़ें और निम्नलिखित कंटेंट के साथ मुख्य एप्लीकेशन फ़ाइल bin/console बनाएं। कृपया ध्यान दें कि कोई फ़ाइल एक्सटेंशन नहीं है, और यह भी सुनिश्चित करें कि यह एक्सेक्यूट करने योग्य भी है क्योंकि हमें इसे कमांड लाइन से चलाने की आवश्यकता होगी।
#!/usr/bin/env php <?php require_once __DIR__ . '/../vendor/autoload.php'; use Symfony\Component\Console\Application; $app = new Application(); $app->run();
फ़ाइल #!/Usr/bin/env php
में पहली लाइन यह सुनिश्चित करती है कि यह PHP एनवायरनमेंट के अंतर्गत चलती है। आगे बढ़ें और इसे चलाने की कोशिश करें और देखें कि यह कैसा चल रहा है।
$bin/console Console Tool Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands: help Displays help for a command list Lists commands
बुरा नहीं है! कोड की केवल कुछ लाइन्स के साथ, आपके पास अपने निपटारे पर कस्टम कंसोल एप्लिकेशन चल रही है! लेकिन इस समय यह कुछ भी उपयोगी नहीं कर रही है। अगले सेक्शन में, हम देखेंगे कि आप कस्टम कमांड कैसे बना सकते हैं और इसे हमारे कस्टम कंसोल एप्लिकेशन के साथ रजिस्टर कर सकते हैं।
हैलो वर्ल्ड कमांड फ़ाइल बनाएं
आइए आगे बढ़ें और अपना पहला कस्टम कमांड बनाएं: HelloworldCommand
। निम्नलिखित कंटेंट के साथ src/App/Commands/HelloworldCommand.php फ़ाइल बनाएं।
<?php namespace Console\App\Commands; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Input\InputArgument; class HelloworldCommand extends Command { protected function configure() { $this->setName('hello-world') ->setDescription('Prints Hello-World!') ->setHelp('Demonstration of custom commands created by Symfony Console component.') ->addArgument('username', InputArgument::REQUIRED, 'Pass the username.'); } protected function execute(InputInterface $input, OutputInterface $output) { $output->writeln(sprintf('Hello World!, %s', $input->getArgument('username'))); } }
आपके कस्टम कमांड को बनाते समय आपको दो मुख्य मेथड्स बनाना चाहिए: configure
और execute
।
जैसा कि नाम से पता चलता है, configure
मेथड आपको अपने कमांड को कॉन्फ़िगर करने की अनुमति देती है ताकि आप कमांड के नाम, कमांड का डिस्क्रिप्शन, हेल्प टेक्स्ट और अन्य सेट कर सकें। यदि आप कमांड चलाते समय पैरामीटर पास करना चाहते हैं तो आप अपने कमांड के लिए आर्गुमेंट भी कॉन्फ़िगर कर सकते हैं।
उपर्युक्त उदाहरण में, कमांड नाम hello-world
पर सेट है। साथ ही, हम यूजरनेम को पहले आर्गुमेंट के रूप में पास करना चाहते हैं, और इसलिए हमने इसे addArgument
मेथड का उपयोग करके कॉन्फ़िगर किया है।
दूसरी तरफ, execute
मेथड में कमांड का एप्लीकेशन लॉजिक होता है। हमारे मामले में, हमने हैलो वर्ल्ड को कमांड के आउटपुट के रूप में प्रदर्शित करके इसे बहुत सरल रखा है।
इससे पहले कि आप आगे बढ़ सकें और वास्तव में इस कमांड को चलाएं, आपको इसे कंसोल एप्लिकेशन के साथ रजिस्टर करना होगा जिसे हमने पिछले सेक्शन में बनाया है। आइए निम्न को देखने के लिए bin/console फ़ाइल को जल्दी से संशोधित करें।
#!/usr/bin/env php <?php require_once __DIR__ . '/../vendor/autoload.php'; use Symfony\Component\Console\Application; use Console\App\Commands\HelloworldCommand; $app = new Application(); $app->add(new HelloworldCommand()); $app->run();
जैसा कि आप देख सकते हैं, हमने HelloworldCommand
कमांड जोड़ने के लिए Application
ऑब्जेक्ट के add
मेथड का उपयोग किया है। आइए सभी उपलब्ध कमांडों को तुरंत सूचीबद्ध करें।
$bin/console list Console Tool Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands: hello-world Prints Hello-World! help Displays help for a command list Lists commands
जैसा कि अपेक्षित है, उपलब्ध कमांड की सूची में hello-world
कमांड दिखाई देती है! आगे बढ़ो और इसे चलाओ!
$bin/console hello-world tutsplus Hello World!, tutsplus
तो इस तरह आप मूल कमांड इनस्टॉल कर सकते हैं!
एक असली दुनिया का उदाहरण-कैश को क्लियर करने की कमांड
पिछले section में, हमने कंसोल कॉम्पोनेन्ट के कांसेप्ट को प्रदर्शित करने के लिए hello-world
कमांड बनायीं थी। इस सेक्शन में, हम आगे बढ़ेंगे और वास्तविक दुनिया का उदाहरण तैयार करेंगे जो दर्शाता है कि आप अपने एप्लीकेशन में कैश को साफ़ करने के लिए एक कमांड कैसे बना सकते हैं।
Clear Cache Command फ़ाइल बनाएं
आगे बढ़ें और निम्नलिखित कंटेंट के साथ src/App/Commands/ClearcacheCommand.php फ़ाइल बनाएं।
<?php namespace Console\App\Commands; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; class ClearcacheCommand extends Command { protected function configure() { $this->setName('clear-cache') ->setDescription('Clears the application cache.') ->setHelp('Allows you to delete the application cache. Pass the --groups parameter to clear caches of specific groups.') ->addOption( 'groups', 'g', InputOption::VALUE_OPTIONAL, 'Pass the comma separated group names if you don\'t want to clear all caches.', '' ); } protected function execute(InputInterface $input, OutputInterface $output) { $output->writeln('Cache is about to cleared...'); if ($input->getOption('groups')) { $groups = explode(",", $input->getOption('groups')); if (is_array($groups) && count($groups)) { foreach ($groups as $group) { $output->writeln(sprintf('%s cache is cleared', $group)); } } } else { $output->writeln('All caches are cleared.'); } $output->writeln('Complete.'); } }
configure
मेथड काफी सामान ही है, सिवाय इसके कि हमने हमारे कमांड में एक ऑप्शन जोड़ने के लिए addOption
मेथड का उपयोग किया है। इस प्रकार, आप --groups
पैरामीटर का उपयोग करके ग्रुप वैल्यूज को पारित कर सकते हैं।
दूसरी तरफ, execute
मेथड में हमारे कमांड का एप्लीकेशन लॉजिक होता है।
यदि आप विशिष्ट ग्रुप्स के कैश को साफ़ करना चाहते हैं, तो आपको --group
पैरामीटर के साथ ग्रुप नामों को पारित करने की आवश्यकता है। दूसरी तरफ, यदि आप सभी कैश साफ़ करना चाहते हैं तो --group
पैरामीटर को छोड़ दें। आपने देखा होगा कि हमने addOption
मेथड के तीसरे आर्गुमेंट में InputOption::VALUE_OPTIONAL
वैल्यू प्रदान करके --group
पैरामीटर वैकल्पिक रखा है।
कंसोल एप्लीकेशन के साथ रजिस्ट्रेशन और टेस्टिंग
आगे बढ़ने से पहले और वास्तव में इसे चलाने से पहले, आइए हमारे कंसोल एप्लिकेशन के साथ कमांड रजिस्टर करें।
#!/usr/bin/env php <?php require_once __DIR__ . '/../vendor/autoload.php'; use Symfony\Component\Console\Application; use Console\App\Commands\HelloworldCommand; use Console\App\Commands\ClearcacheCommand; $app = new Application(); $app->add(new HelloworldCommand()); $app->add(new ClearcacheCommand()); $app->run();
अब, आगे बढ़ें और सभी कैश साफ़ करने के लिए bin/console clear-cache
कमांड चलाएं!
$bin/console clear-cache Cache is about to cleared... All caches are cleared. Complete.
अगला, यदि आप विशिष्ट कैश साफ़ करना चाहते हैं, तो आप इस तरह कुछ कोशिश कर सकते हैं।
$bin/console clear-cache --groups=group1,group2 Cache is about to cleared... group1 cache is cleared group2 cache is cleared Complete.
बेशक, आपको कैश साफ़ करने के लिए वास्तविक लॉजिक को लागू करने की आवश्यकता होगी, लेकिन इसे एक अच्छे स्टार्टिंग पॉइंट के रूप में कार्य करना चाहिए।
निष्कर्ष
आज, हम Symfony फ्रेमवर्क द्वारा प्रदान किए गए लोकप्रिय कंपोनेंट्स में से एक के माध्यम से गए: Console Component। यह वास्तव में एक उपयोगी कॉम्पोनेन्ट है, क्या आप अपना स्वयं का CLI एप्लीकेशन डेवेलोप करना चाहते हैं जो आपको आसानी से अपने दिन-प्रतिदिन यूटिलिटी टास्कस को एक्सेक्यूट करने में मदद करता है।
पहले हाफ में, हम कॉम्पोनेन्ट की इंस्टालेशन और कॉन्फ़िगरेशन के माध्यम से चले। फिर, दूसरे हाफ में, हमने कंसोल कमांड के कुछ उदाहरण बनाए।
हमें नीचे दिए गए कमैंट्स में बताएं कि आप क्या सोचते हैं।
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post