تكرار السؤال: …
الإجابة المختصرة
يبدأ بـ index.php، ثم تحميل Autoloader، وإنشاء نسخة التطبيق وتمرير الطلب لـ HTTP Kernel، وتشغيل Service Providers، والمرور عبر الـ Middlewares، والتوجيه للـ Controller، وإعادة الاستجابة.
الشرح
يدخل الطلب إلى public/index.php ويتم تحميل الـ Composer autoloader، ثم يستدعى bootstrap/app.php لإنشاء نسخة التطبيق (Application Container). في Laravel 11 وما بعده يستدعي index.php الدالة handleRequest() على التطبيق، وهي تمرر الطلب داخليًا إلى HTTP Kernel الذي يشغل الـ Bootstrappers لتحميل الإعدادات ومعالجة الأخطاء وتسجيل وتشغيل الـ Service Providers (عبر register ثم boot). يمر الطلب بعد ذلك عبر الـ Middlewares العالمية وميدلوير المسار ليصل إلى المتحكم (Controller)، وتتحول النتيجة إلى Response تعود عبر نفس الـ Middlewares وصولًا إلى المتصفح.
مثال بالكود
// public/index.php (Laravel 11+)
use Illuminate\Http\Request;
define('LARAVEL_START', microtime(true));
require __DIR__.'/../vendor/autoload.php';
(require_once __DIR__.'/../bootstrap/app.php')
->handleRequest(Request::capture()); // Laravel 10 and earlier: $kernel->handle($request)->send()أخطاء شائعة
- وضع كود يعتمد على خدمات أخرى داخل دالة register() في الـ Service Provider قبل اكتمال مرحلة boot().
أسئلة متابعة
- كيف ينفذ Laravel نمط خط الأنابيب (Pipeline) في الـ Middlewares وما هي واجهة TerminableMiddleware؟
- كيف تغيرت بنية إقلاع التطبيق في Laravel 11 بإلغاء الـ Http Kernel ودمج التكوين في bootstrap/app.php؟