أطر CLI للغة PHP: إنشاء تطبيقات وحدة تحكم قوية
التطوير الحديث بلغة PHP لا يقتصر على تطبيقات الويب. في كثير من الأحيان، يحتاج المطورون إلى إنشاء أدوات وحدة تحكم (CLI): معالجات قوائم الانتظار، الترحيلات، مولدات التقارير، محللات البيانات. لهذه المهام، توجد أطر متخصصة تعمل على تبسيط إنشاء أوامر وحدة التحكم، ومعالجة الوسائط، وتنسيق المخرجات، وإدارة التبعيات.
أطر CLI الرئيسية للغة PHP
- Symfony Console — المكون الأكثر شيوعًا من Symfony، يُستخدم في Laravel و Drupal و Composer ومئات المشاريع الأخرى.
- Laravel Zero — إطار صغير يعتمد على Laravel، مُحسّن لتطبيقات CLI.
- CLIFramework — إطار خفيف مع دعم الإكمال التلقائي لـ Zsh/Bash.
- PHP CLI Tools — مكتبة بسيطة للغاية للنصوص البرمجية البسيطة.
Symfony Console: المعيار العالمي
المكون symfony/console هو المعيار الفعلي لتطبيقات CLI بلغة PHP. يوفر مجموعة كاملة من الأدوات لإنشاء الأوامر، بما في ذلك:
- تحليل تلقائي لوسائط وخيارات سطر الأوامر.
- مخرجات منسقة مع دعم الألوان والجداول وأشرطة التقدم.
- أسئلة تفاعلية وإكمال تلقائي.
- نظام مرن للأحداث ودورة حياة الأمر.
// مثال لأمر بسيط على 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 = ['