إزاي تخلي كود الـ PHP بتاعك "برنس" باستخدام PHPStan و Laravel Pint
أكيد مريت بالموقف ده قبل كده: كتبت كود زي الفل، ورفعته على الـ Git، وبعدين اكتشفت إن في "Bug" تافهة كانت ممكن تتحل لو بس حد بص على الكود! أو إنك شغال في فريق وكل واحد بيكتب الكود بطريقته الخاصة، فبقى الـ Codebase عبارة عن "شوربة" أشكال وألوان. هنا بيجي دور أتمتة جودة الكود (Code Quality Automation) اللي بتريح بالك وتخلي فريقك يركز في البيزنس بدل ما يضيع وقت في مراجعة المسافات والسيمي كولون.
Table of contents [Show]
ليه محتاج PHPStan و Laravel Pint في مشروعك؟
في عالم الـ PHP، عندنا أداتين بيعتبروا "المنقذ" لأي مبرمج محترف:
- Laravel Pint: دي أداة بتخلي الكود بتاعك متناسق (Code Style) حسب معايير المجتمع (PSR-12). يعني بتصلح المسافات، الأقواس، وترتيب السطور بشكل تلقائي.
- PHPStan: ده "المحلل الساكن" (Static Analysis Tool). ده مش بيصلح مسافات، ده بيدخل جوه المنطق بتاع الكود (Logic) وبيطلع لك الأخطاء اللي ممكن تقع فيها، زي مثلاً إنك بتبعت متغير ممكن يكون Null لدالة مش بتقبل Null، وده بيحميك من أخطاء الـ Runtime.
خطوات إعداد Laravel Pint وتنسيق الكود
الأداة دي بتيجي مع لارافيل جاهزة، ولو مش عندك تقدر تثبتها ببساطة:
composer require laravel/pint --dev
عشان تشغلها وتنسق الكود بتاعك، كل اللي عليك تعمله هو كتابة الأمر ده في التيرمينال:
./vendor/bin/pint
ممكن تعمل ملف إعدادات باسم pint.json في الروت عشان تحدد الرولز اللي عايز تمشي عليها، وبكده تضمن إن كل المبرمجين في الفريق بيطلعوا كود "شبه بعضه" بالظبط.
التحليل الساكن مع PHPStan لاكتشاف الأخطاء
هنا بقى بنروح للمستوى الأعمق. الـ Static Analysis بيقرأ الكود من غير ما يعمل له Run. عشان تبدأ، ثبته كـ Dev dependency:
composer require --dev phpstan/phpstan
بعدين انشئ ملف phpstan.neon وحدد مستوى الصرامة (Level) اللي أنت عايزه، من 0 لحد 9 (9 هو الأكثر صرامة):
parameters:
level: 5
paths:
- app
لما تشغل ./vendor/bin/phpstan analyse، الأداة هتقولك بوضوح: "يا هندسة، المتغير ده ممكن يكون ملوش قيمة في السطر كذا"، وبكده بتصطاد المشاكل قبل ما توصل للمستخدم النهائي.
أتمتة العملية باستخدام الـ Git Hooks
عشان ننسى الوجع ده خالص، بنربط الأدوات دي بالـ Git Hooks. فكرة بسيطة: قبل ما تعمل "Commit"، الـ Git بيشغل الأوامر دي أتوماتيك. لو الكود فيه خطأ، الـ Commit مش هيتم غير لما تصلح الكود. ده بيضمن إن مفيش "كود وحش" يدخل الـ Repository أساساً.
نصيحة من أخ لمبرمج زميل
يا صديقي، أدوات الجودة مش عشان تعقدك أو تعطل شغلك، هي عشان "تشتري دماغك". لما تلاقي الكود بتاعك ماشي على معايير ثابتة ومفحوص بأعلى مستويات التحليل، ثقتك في الكود بتاعك بتزيد، والـ Technical Debt عندك بتقل بمرور الوقت. ابدأ بمستوى بسيط في PHPStan، ومع الوقت عّلّي الـ Level. الاستمرارية هي اللي بتصنع المبرمج المحترف، مش بس كتابة الكود.