PHP के लिए CLI फ्रेमवर्क: शक्तिशाली कंसोल एप्लिकेशन बनाना
PHP में आधुनिक विकास केवल वेब एप्लिकेशन तक सीमित नहीं है। डेवलपर्स को तेजी से कंसोल (CLI) उपकरण बनाने की आवश्यकता होती है: क्यू हैंडलर, माइग्रेशन, रिपोर्ट जनरेटर, डेटा पार्सर। इन कार्यों के लिए विशेष फ्रेमवर्क मौजूद हैं जो कंसोल कमांड बनाने, आर्गुमेंट प्रोसेसिंग, आउटपुट फ़ॉर्मेटिंग और डिपेंडेंसी प्रबंधन को सरल बनाते हैं।
PHP के लिए मुख्य CLI फ्रेमवर्क
- Symfony Console — Symfony का सबसे लोकप्रिय घटक, जो Laravel, Drupal, Composer और सैकड़ों अन्य प्रोजेक्ट्स में उपयोग होता है।
- Laravel Zero — Laravel पर आधारित माइक्रो-फ्रेमवर्क, CLI एप्लिकेशन के लिए अनुकूलित।
- CLIFramework — Zsh/Bash ऑटो-कम्प्लीशन सपोर्ट वाला हल्का फ्रेमवर्क।
- PHP CLI Tools — सरल स्क्रिप्ट के लिए न्यूनतम लाइब्रेरी।
Symfony Console: सार्वभौमिक मानक
घटक symfony/console PHP में CLI एप्लिकेशन के लिए डी-फैक्टो मानक है। यह कमांड बनाने के लिए उपकरणों का पूरा सेट प्रदान करता है, जिसमें शामिल हैं:
- कमांड लाइन आर्गुमेंट और विकल्पों का स्वचालित पार्सिंग।
- रंगों, तालिकाओं और प्रोग्रेस बार के साथ फ़ॉर्मेटेड आउटपुट।
- इंटरैक्टिव प्रश्न और ऑटो-कम्प्लीशन।
- लचीली इवेंट प्रणाली और कमांड जीवनचक्र।
// Symfony Console पर एक सरल कमांड का उदाहरण<?php// फ़ाइल: src/Command/GreetCommand.phpnamespace App\\Command;
use Symfony\\Component\\Console\\Command\\Command;use Symfony\\Component\\Console\\Input\\InputArgument;use Symfony\\Component\\Console\\Input\\InputInterface;use Symfony\\Component\\Console\\Output\\OutputInterface;
class GreetCommand extends Command{ protected static $defaultName = 'app:greet';
protected function configure(): void { $this ->setDescription('उपयोगकर्ता का स्वागत करता है') ->addArgument('name', InputArgument::REQUIRED, 'उपयोगकर्ता का नाम') ->addOption('yell', null, null, 'बड़े अक्षरों में प्रदर्शित करें'); }
protected function execute(InputInterface $input, OutputInterface $output): int { $name = $input->getArgument('name'); $message = "नमस्ते, $name!";
if ($input->getOption('yell')) { $message = strtoupper($message); }
$output->writeln($message); return Command::SUCCESS; }}
// चलाएँ: php bin/console app:greet इवान --yellLaravel Zero: कमांड लाइन के लिए Laravel
Laravel Zero एक माइक्रो-फ्रेमवर्क है जो Laravel की सुविधा (Eloquent ORM, Artisan, Blade, शेड्यूल किए गए कार्य) को CLI की दुनिया में लाता है। यह स्वतंत्र कंसोल उपयोगिताएँ बनाने के लिए आदर्श है जिन्हें वेब इंटरफ़ेस की आवश्यकता नहीं होती।
Laravel Zero की प्रमुख विशेषताएँ:
- परिचित Artisan कमांड सिंटैक्स।
- डेटाबेस (SQLite, MySQL) के लिए अंतर्निहित समर्थन।
- कार्य शेड्यूलर (Cron-जैसी कार्यक्षमता)।
- तालिकाओं और प्रोग्रेस बार के साथ आउटपुट फ़ॉर्मेटिंग।
- एकल PHAR फ़ाइल में संकलन की क्षमता।
// Laravel Zero में कमांड का उदाहरण<?php// फ़ाइल: app/Commands/ExportUsers.phpnamespace App\\Commands;
use Illuminate\\Console\\Command;use App\\Models\\User;
class ExportUsers extends Command{ protected $signature = 'export:users {--format=csv : आउटपुट फ़ॉर्मेट (csv/json)}'; protected $description = 'उपयोगकर्ताओं की सूची निर्यात करता है';
public function handle(): int { $users = User::all(['id', 'name', 'email']); $format = $this->option('format');
if ($format === 'json') { $this->line($users->toJson(JSON_PRETTY_PRINT)); } else { $headers = ['