ما هو إطار CLI لـ PHP ولماذا هو مطلوب؟
إطار CLI (واجهة سطر الأوامر) لـ PHP هو أداة تبسط إنشاء تطبيقات وسكربتات الكونسول. بدلاً من التحليل اليدوي للوسائط $argv ومعالجة الإدخال/الإخراج، تحصل على بنية جاهزة تدعم الأوامر والخيارات والإخراج الملون وأشرطة التقدم وحتى القوائم التفاعلية.
في تطوير PHP الحديث، تُستخدم أطر CLI على نطاق واسع:
- أتمتة المهام (ترحيل قواعد البيانات، التخزين المؤقت، النشر)
- توليد الكود (scaffolding)
- سكربتات CRON ومعالجات الخلفية
- أدوات DevOps و CI/CD
دعنا نلقي نظرة على خمسة من أشهر الحلول التي يمكنك استخدامها على pythonlib.ru.
1. Symfony Console — معيار الصناعة
Symfony Console هو أكثر أطر CLI نضجًا وشعبية لـ PHP. يُستخدم في Laravel Artisan و Doctrine و Composer ومئات المشاريع الأخرى.
التثبيت
composer require symfony/consoleمثال: تطبيق بسيط "Hello World"
// hello.phprequire __DIR__ . '/vendor/autoload.php';
use Symfony\\Component\\Console\\Application;use Symfony\\Component\\Console\\Command\\Command;use Symfony\\Component\\Console\\Input\\InputInterface;use Symfony\\Component\\Console\\Output\\OutputInterface;
class HelloCommand extends Command{ protected static $defaultName = 'app:hello';
protected function configure(): void { $this->setDescription('تحية المستخدم'); }
protected function execute(InputInterface $input, OutputInterface $output): int { $output->writeln('<info>مرحبًا، أيها العالم!</info>'); return Command::SUCCESS; }}
$application = new Application();$application->add(new HelloCommand());$application->run();الإمكانيات الرئيسية
- توليد تلقائي للتعليمات (
--help) - دعم الخيارات والوسائط مع التحقق من الصحة
- إخراج ملون عبر الأنماط (info, error, comment)
- أشرطة التقدم، الجداول، الأسئلة
- اختبار الأوامر عبر
CommandTester
2. Laravel Zero — إطار مصغر مبني على Laravel
Laravel Zero هو نسخة خفيفة من Laravel، محسنة لـ CLI. مثالي إذا كنت معتادًا على نظام Laravel البيئي ولكنك لا تريد سحب الإطار بأكمله.
التثبيت
composer create-project laravel-zero/laravel-zero my-cli-appمثال: أمر مع وسائط
// app/Commands/GreetCommand.phpnamespace App\\Commands;
use LaravelZero\\Framework\\Commands\\Command;
class GreetCommand extends Command{ protected $signature = 'greet {name : اسم المستخدم} {--yell : هل نصرخ؟}'; protected $description = 'تحية بالاسم';
public function handle(): int { $name = $this->argument('name'); $message = "مرحبًا، $name!"; if ($this->option('yell')) { $message = strtoupper($message); } $this->info($message); return self::SUCCESS; }}ما بداخله؟
- Eloquent ORM (اختياري)
- أوامر على نمط Artisan
- دعم قوائم الانتظار والمهام
- ترحيل وإضافة بيانات لقاعدة البيانات
- تجميع مدمج إلى أرشيف PHAR
3. Minicli — بسيط وسريع
Minicli هو إطار CLI خفيف الوزن بدون تبعيات. يزن أقل من 100 كيلوبايت وهو مثالي للخدمات المصغرة والأدوات البسيطة.
التثبيت
composer require minicli/minicliمثال: استطلاع تفاعلي
// app.phprequire __DIR__ . '/vendor/autoload.ph