PHP ليست فقط للويب: لماذا يجب أن تكون أداتك CLI التالية مكتوبة بلغة PHP
عندما نسمع "PHP"، أول ما يتبادر إلى الذهن هو المواقع، ووردبريس، وecho التي لا نهاية لها في المتصفح. لكن PHP هي سكين سويسري حقيقي للمطور. واحدة من أكثر ميزاتها التي لا تحظى بالتقدير الكافي هي القدرة على إنشاء أدوات CLI بلغة PHP كاملة. نعم، تلك البرامج الطرفية التي تساعد في أتمتة المهام الروتينية، وتحليل السجلات، وإنشاء التقارير، وتجعل حياة مهندس DevOps أسهل قليلاً.
في هذه المقالة، لن نتحدث عن النظرية فقط. سنأخذ ونكتب من الصفر العديد من تطبيقات وحدة التحكم بلغة PHP الحقيقية. ستتعلم كيفية معالجة وسائط سطر الأوامر، وتلوين المخرجات، وعرض أشرطة التقدم، وحتى إنشاء قوائم تفاعلية. في نهاية المقالة، سيكون لديك قالب جاهز يمكنك استخدامه فوراً في مشاريعك.
لماذا PHP لواجهة CLI؟ 3 حجج قوية
قبل الغوص في الكود، دعنا نفهم لماذا نستخدم PHP لـ إنشاء أدوات CLI. فهناك Python، Node.js، Go...
- أنت تعرف PHP بالفعل. إذا كنت مطور ويب بلغة PHP، فلن تحتاج لتعلم بناء جملة جديد لكتابة سكريبت لنسخ قاعدة البيانات احتياطياً أو النشر.
- نظام بيئي موحد. يمكنك استخدام نفس المكتبات (عبر Composer)، ونفس ORM، ونفس محركات القوالب. هل تريد سكريبت ينشئ تقرير PDF من قاعدة البيانات؟ تفضل.
- سرعة التطوير. سكريبتات PHP تُكتب بسرعة كبيرة. للأدوات البسيطة، هذا هو الخيار المثالي - لا حاجة للترجمة، أو إعداد البيئة، فقط قم بتشغيله وانطلق.
بالطبع، للبرامج الخلفية عالية التحميل أو أدوات النظام المعقدة، من الأفضل استخدام C أو Rust. لكن لـ 90% من المهام اليومية، PHP مناسبة تماماً.
من الصفر إلى أول أداة CLI: hello, world! في الطرفية
لنبدأ بأبسط شيء. أنشئ ملفاً باسم hello.php واكتب:
#!/usr/bin/env php<?php
echo "مرحباً أيتها الطرفية!";السطر الأول هو shebang. يخبر النظام أنه يجب تنفيذ هذا الملف باستخدام PHP. بدونه، سيتعين عليك كتابة php hello.php في كل مرة، ولكن معه يمكنك ببساطة كتابة ./hello.php.
لا تنسَ منح الملف صلاحيات التنفيذ:
chmod +x hello.phpالآن قم بتشغيله:
./hello.phpتهانينا! لقد أنشأت للتو أول أداة CLI بلغة PHP لك. هذا بسيط بشكل لا يصدق، أليس كذلك؟
العمل مع الوسائط: جعل الأداة مفيدة
يجب أن يكون أي برنامج وحدة تحكم جاد قادراً على قبول الوسائط. توفر PHP مصفوفتين عموميتين فائقتين لهذا: $argv و $argc.
$argv- مصفوفة الوسائط. العنصر الأول هو اسم السكريبت.$argc- عدد الوسائط.
لنكتب آلة حاسبة بسيطة - نجمع رقمين تم تمريرهما كوسائط.
آلة حاسبة بسيطة على PHP CLI
#!/usr/bin/env php<?php
if ($argc !== 3) { echo "الاستخدام: {$argv[0]} <رقم1> <رقم2>"; exit(1);}
$a = (int)$argv[1];$b = (int)$argv[2];
echo "المجموع: " . ($a + $b) . "";echo "الفرق: " . ($a - $b) . "";echo "حاصل الضرب: " . ($a * $b) . "";echo "حاصل القسمة: " . ($a / $b) . "";نقوم بتشغيلها:
./calc.php 10 5المخرجات:
المجموع: 15الفرق: 5حاصل الضرب: 50حاصل القسمة: 2لكن هذا بدائي للغاية. في المشاريع الحقيقية، نحتاج إلى وسائط مسماة (أعلام)، كما في git commit -m "message". لهذا، توفر PHP الدالة getopt().
الوسائط المسماة مع getopt()
#!/usr/bin/env php<?php
$shortOptions = "u