هيكل مجلدات لارافيل 11 و 12: رحلة التبسيط والاحترافية
لو كنت مبرمج لارافيل (Laravel) قديم، أكيد أول ما فتحت مشروع جديد في إصدار 11 أو 12 اتصدمت! فين ملفات الـ (Config)؟ وفين الـ (Kernel)؟ وفين مجلدات الـ (Middleware) الكتيرة اللي كانت بتلخبطنا؟ الحقيقة إن فريق لارافيل عملوا نقلة نوعية عشان يخلوا المشروع (Lean) وخفيف، ودي خطوة ممتازة لزيادة الإنتاجية وتقليل التشتت.
Table of contents [Show]
ليه لارافيل غيرت هيكل المجلدات (Directory Structure)؟
في الإصدارات القديمة، كان مجلد المشروع مليان ملفات إعدادات (Configuration files) ومجلدات إضافية كتير المطور المبتدئ مش بيلمسها في 90% من وقته. الهدف من التغيير ده هو "التبسيط" (Simplicity) وتوفير تجربة تطوير أسرع. دلوقتي، لارافيل بتعتمد على نظام الـ (Bootstrap) الجديد اللي بيجمع كل شيء في مكان واحد.
ملف bootstrap/app.php: العقل المدبر للمشروع
بدل ما تدور على الـ (Kernel) عشان تضيف (Middleware) أو تعدل في الـ (Routing)، لارافيل دلوقتي نقلت كل ده لملف واحد وهو bootstrap/app.php. ده الملف اللي بيتحكم في كل إعدادات التطبيق. خليني أوريك إزاي تضيف (Middleware) مخصص:
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->web(append: [
\App\Http\Middleware\HandleInertiaRequests::class,
]);
})
->create();
زي ما أنت شايف، الموضوع بقى (Fluent) ومباشر جداً، مفيش حاجة تانية تدور عليها، كل حاجة بتتم من خلال الـ (Configuration chaining).
اختفاء ملفات الإعدادات (Config) التقليدية
ممكن تسأل: "طب فين ملفات الـ config/app.php أو config/database.php؟". الإجابة هي إنها لسه موجودة، لكنها بقت مخفية أو تقدر تقول "اختيارية". لارافيل دلوقتي بتعتمد على (Environment Variables) بشكل أكبر، ولو حبيت تعدل أي إعداد، لارافيل بتشجعك إنك تعتمد على القيم الافتراضية، ولو احتجت تعديل خاص، تقدر تعمل (Publish) لملفات الإعدادات دي بكل سهولة باستخدام أمر php artisan config:publish.
التعامل مع الـ Routing والـ Controllers
في الإصدارات الجديدة، لارافيل خلت الـ (Controller) هو النجم. ومجلد app/Http/Controllers بقى أنظف بكتير. كمان الـ (Routing) بقى بياخد تركيز أكبر في ملف routes/web.php. لارافيل بقت بتشجع المطورين إنهم يستخدموا الـ (Route Groups) بشكل ذكي عشان ينظموا المشروع بدل ما المجلدات تكون هي وسيلة التنظيم الوحيدة.
نصيحة من أخ لمبرمج زيك
التغيير ده في الأول ممكن يحسسك إنك "تايه" خصوصاً لو متعود على الهيكل القديم، بس صدقني، بعد أسبوع واحد من الشغل على لارافيل 11 أو 12، هتحس إنك كنت مضيع وقتك في إدارة الملفات. نصيحتي ليك: ما تحاولش تقاوم التغيير، اقرأ الـ (Documentation) الرسمي بتركيز، وجرب تنقل مشروع قديم للهيكل الجديد، ده أفضل تمرين يخليك محترف في التعامل مع (Framework Architecture).
خليك دايماً متابع التحديثات، ولارافيل دايماً بتبهرنا بحلول بتخلينا نركز على "كتابة الكود اللي بيحل المشكلة" مش "إدارة ملفات المشروع". بالتوفيق في مشاريعك الجاية!