إزاي تبني أدوات تيرمينال احترافية باستخدام Laravel Prompts
أكيد مريت بالموقف ده: بتبني سكريبت أتمتة (Automation Script) بيشغل شوية مهام متكررة في مشروعك، وفجأة لقيت نفسك بتكتب كود معقد عشان تاخد "Input" من المستخدم، أو عشان تعرض قائمة اختيارات، وفي الآخر بيطلع شكل "التيرمينال" (Terminal) بدائي جداً وغير مريح للعين. الـ "CLI" أو واجهة سطر الأوامر مش لازم تكون مملة أو صعبة التعامل، وهنا بيجي دور "Laravel Prompts" عشان ينقل التجربة لمستوى تاني خالص.
Table of contents [Show]
ليه محتاج تستخدم Laravel Prompts في شغلك؟
في العادة، التعامل مع الـ CLI بيكون جاف، ولو عايز تعمل تجربة مستخدم (User Experience) كويسة، كنت بتحتاج مكتبات تقيلة ومحتاجة إعدادات كتير. مع Laravel Prompts، الموضوع بقى أسهل بكتير. هي مكتبة بتخليك تبني واجهات تفاعلية جوه التيرمينال بأقل مجهود، وبشكل "Native" جداً بيمشي مع جماليات لارافيل.
لو كنت بتطور أدوات أتمتة (Automation Tools) أو حابب توفر على فريقك وقت في إدخال البيانات، الأداة دي هتبقى إيدك اليمين.
البداية: إزاي تثبت وتستخدم الأداة؟
الموضوع بسيط جداً، المكتبة دي بتشتغل مع أي مشروع PHP، مش بس لارافيل، لكنها طبعاً بتنور أكتر جوه بيئة لارافيل. كل اللي عليك تعمله هو تشغيل الأمر ده في التيرمينال:
composer require laravel/prompts
بعد كدة، تقدر تستدعي أي "Prompt" محتاجه بكل سهولة. تعالوا نشوف مثال بسيط بياخد اسم المستخدم بطريقة احترافية:
use function Laravel\Prompts\text;
$name = text(
label: 'أدخل اسم المستخدم:',
placeholder: 'مثلاً: Ahmed'
);
بناء أدوات تفاعلية (Interactive CLI Tools)
بدل ما تعتمد على الـ ask() التقليدية، Laravel Prompts بتديك خيارات كتير زي "Select" للاختيارات المتعددة، و "MultiSelect" لو عايز المستخدم يختار أكتر من حاجة. ده بيقلل الأخطاء البشرية (Human Errors) وبيخلي السكريبت بتاعك "Fool-proof" أو مقاوم للأخطاء.
بص على المثال ده عشان تعمل قائمة اختيارات (Dropdown menu) داخل التيرمينال:
use function Laravel\Prompts\select;
$role = select(
label: 'اختار صلاحيات المستخدم:',
options: ['Admin', 'Editor', 'Viewer']
);
التعامل مع البيانات الحساسة والتحقق (Validation)
من أهم مميزات الأداة هي الـ "Validation". تخيل إنك بتعمل سكريبت لإنشاء قاعدة بيانات، ومحتاج تتأكد إن الـ Input مش فاضي أو إن التنسيق صح. مع Laravel Prompts، الموضوع بيتم في سطر واحد:
use function Laravel\Prompts\password;
$password = password(
label: 'أدخل كلمة المرور:',
validate: fn ($value) => strlen($value) < 8 ? 'كلمة المرور قصيرة جداً' : null
);
نصيحة من أخ لمطور بيبدأ يطور أدواته
نصيحتي ليك يا بطل، ما تحاولش تعمل "أتمتة" لكل حاجة من أول يوم. ابدأ بالمهام اللي بتكررها يومياً زي (Migrations، تظبيط بيئة العمل، أو نقل الملفات). لما تستخدم Laravel Prompts، ركز إن "User Experience" جوه التيرمينال تكون بسيطة ومباشرة. كل ما كان السكريبت بتاعك ذكي وبيوجه المستخدم، كل ما كان فريقك أو حتى "أنت في المستقبل" هتدعي لنفسك.
جرب تبني أداة CLI بسيطة النهاردة، وهتلاقي إنتاجيتك في الشغل زادت بشكل ملحوظ. بالتوفيق في رحلتك البرمجية!