Minicli هو إطار عمل بسيط وخالي من التبعية لبناء تطبيقات PHP التي تتمحور حول CLI. فهو يوفر طريقة منظمة لتنظيم أوامرك، بالإضافة إلى العديد من المساعدات لتسهيل العمل مع وسيطات الأوامر، والحصول على المدخلات من المستخدمين، وطباعة المخرجات الملونة.
روابط سريعة:
ماذا يعني أن تكون خاليًا من التبعية؟ هذا يعني أنه يمكنك إنشاء تطبيق CLI PHP فعال دون العشرات من تبعيات أرض المستخدم المتداخلة. تحتوي حزمة minicli/minicli
الأساسية على تبعيات اختبارية فقط ومتطلبات نظام واحدة:
ملحوظة: إذا كنت تريد الحصول على مدخلات المستخدم، فإن ملحق
readline
PHP مطلوب أيضًا.
يمنحك مساحة كبيرة لاختيار التبعيات الخاصة بك.
هناك طريقتان للبدء. إذا كنت تريد الحد الأدنى، وهو ما سنسميه "Minimalist App"، فيمكنك إنشاء برنامج نصي PHP واحد مع تطبيقك بالكامل. إذا كنت تريد تطبيقًا أكثر تنظيمًا، يحتوي على أوامر وأوامر فرعية، فيجب عليك استخدام مساحات أسماء الأوامر لتنظيم أوامرك في وحدات التحكم.
إذا كنت تريد فقط إعداد بعض الأوامر البسيطة للتشغيل من خلال minicli
، فكل ما عليك فعله هو إنشاء App
وتسجيل أوامرك كوظائف مجهولة.
composer require minicli/minicli
- سيؤدي هذا إلى إنشاء ملف composer.json
جديد.minicli
بالمحتوى التالي: #!/usr/bin/env php
<?php
if ( php_sapi_name () !== ' cli ' ) {
exit ;
}
require __DIR__ . ' /vendor/autoload.php ' ;
use Minicli App ;
use Minicli Command CommandCall ;
$ app = new App ();
$ app -> setSignature ( ' ./minicli mycommand ' );
$ app -> registerCommand ( ' mycommand ' , function ( CommandCall $ input ) {
echo " My Command! " ;
var_dump ( $ input );
});
$ app -> runCommand ( $ argv );
بعد ذلك، اجعله قابلاً للتنفيذ وقم بتشغيل minicli
باستخدام الأمر الخاص بك:
chmod +x minicli
./minicli mycommand
للحصول على تطبيق أكثر تنظيمًا باستخدام وحدات التحكم والخدمات، من الأفضل استخدام مساحات أسماء الأوامر. يعد مستودع قوالب التطبيقات الخاص بنا بمثابة نقطة بداية / قالب رائع لإعداد Minicli بهذه الطريقة.
لإنشاء مشروع جديد باستخدام قالب minicli/application
، قم بتشغيل:
composer create-project --prefer-dist minicli/application myapp
سيؤدي هذا إلى إنشاء بنية دليل مثل ما يلي:
.
app
└── Command
└── Help
├── DefaultController.php
├── TableController.php
└── TestController.php
├── composer.json
├── docs
├── LICENSE
├── minicli
├── mkdocs.yml
└── README.md
يمثل كل دليل داخل app/Command
مساحة اسم الأمر. تمثل الفئات الموجودة داخل app/Command/Help
الأوامر الفرعية التي يمكنك الوصول إليها من خلال أمر help
الرئيسي.
يمكنك الآن تشغيل التطبيق التمهيدي باستخدام:
./minicli help
تحتوي الوثائق على معلومات أكثر تفصيلاً حول إنشاء الأوامر والعمل مع المخرجات.
يدعم Minicli استخدام سمات الألوان لتغيير نمط إخراج سطر الأوامر. يوجد حاليًا 3 سمات مضمنة بخلاف السمة الافتراضية:
لتعيين السمة، قم بتمرير مصفوفة تكوين بقيمة theme
عند تهيئة التطبيق في البرنامج النصي. تحتاج السمات المضمنة إلى حرف بادئ:
$ app = new App ([
' theme ' => ' Unicorn '
]);
لاستخدام السمة المضمنة الافتراضية، لا تقم بتضمين إعداد تكوين السمة، أو قم بتعيينها على سلسلة فارغة.
يمكن أيضًا إنشاء السمات المعرفة من قبل المستخدم وتحديدها في مشروعك. في هذه الحالة، قم بتعيين اسم السمة بما في ذلك مساحة الاسم الخاصة بها بدون بادئة :
$ app = new App ([
' theme ' => ' AppThemeBlueTheme '
]);
سيستخدم الإعداد أعلاه موضوع المثال التالي:
<?php
// File : app / Theme / BlueTheme . php
namespace App Theme ;
use Minicli Output Theme DefaultTheme ;
use Minicli Output CLIColors ;
class BlueTheme extends DefaultTheme
{
public function getThemeColors (): array
{
return [
' default ' => [ CLIColors:: $ FG_BLUE ],
' alt ' => [ CLIColors:: $ FG_BLACK , CLIColors:: $ BG_BLUE ],
' info ' => [ CLIColors:: $ FG_WHITE ],
' info_alt ' => [ CLIColors:: $ FG_WHITE , CLIColors:: $ BG_BLUE ]
];
}
}
تحتاج السمات المحددة من قبل المستخدم فقط إلى تحديد الأنماط التي ستتجاوز تلك الموجودة في السمة الافتراضية.
المساهمات هي موضع ترحيب كبير! يمكنك المساهمة بالكود والوثائق ومشكلات التسجيل... يرجى الرجوع إلى مستند المساهمة الخاص بنا للحصول على مزيد من المعلومات حول عملية المساهمة وما نتوقعه منك.
يستخدم Minicli Pest PHP كإطار عمل للاختبار. بمجرد تثبيت جميع التبعيات عبر composer install
، يمكنك تشغيل مجموعة الاختبار باستخدام:
./vendor/bin/pest
للحصول على تقرير تغطية التعليمات البرمجية، ستحتاج إلى تثبيت xdebug
. بعد ذلك، يمكنك تشغيل:
./vendor/bin/pest --coverage
وسيعطيك هذا معلومات مفصلة حول تغطية الكود.
البرامج التعليمية التالية على dev.لإنشاء سلسلة تسمى "Building Minicli"، حيث نقوم بإنشاء minicli
من الصفر:
ملحوظة: لقد تطورت Minicli كثيرًا منذ كتابة تلك السلسلة في البداية، ولكن هذا كان الأساس لما هو عليه Minicli اليوم.