تكرار السؤال: …
الإجابة المختصرة
أصبحت البنية أكثر رشاقة؛ حيث دُمجت إعدادات الـ Middlewares والـ Routing والـ Exceptions مباشرة داخل Application Builder في ملف bootstrap/app.php.
الشرح
في Laravel 11 تم التخلص من الملفات الافتراضية الكثيرة مثل app/Http/Kernel.php ومعظم الـ Providers الفارغة. يتم الآن ضبط المسارات والـ Middlewares العامة ومجموعات api/web ومعالجات الاستثناءات عبر صياغة تعبيرية وظيفية داخل bootstrap/app.php باستخدام كائن Application::configure().
مثال بالكود
// bootstrap/app.php (Laravel 11)
return Application::configure(basePath: dirname(__DIR__))
->withRouting(web: __DIR__.'/../routes/web.php', api: __DIR__.'/../routes/api.php')
->withMiddleware(function (Middleware $middleware) {
$middleware->append(CustomHeaderMiddleware::class);
})
->withExceptions(function (Exceptions $exceptions) {
// معالجة الأخطاء
})->create();أخطاء شائعة
- البحث عن مجلدات Kernels المحذوفة عند الترقية إلى Laravel 11 بدلاً من تعديل bootstrap/app.php.
أسئلة متابعة
- ما هي دورة حياة الطلب (Request Lifecycle) في Laravel من لحظة وصوله لـ public/index.php وحتى خروج الاستجابة؟
- لماذا لا يجب استدعاء دالة env() مطلقاً خارج ملفات مجلد config/ في مشاريع Laravel؟