يدخل كل طلب في Laravel عبر front controller واحد، public/index.php، ويقوده HTTP Kernel عبر مكدس middleware وrouter إلى ، ثم يعيد — وبعد ذلك يعمل الـ middleware من نوع .
يدخل كل طلب في Laravel عبر front controller واحد، public/index.php، ويقوده HTTP Kernel عبر مكدس middleware وrouter إلى ، ثم يعيد — وبعد ذلك يعمل الـ middleware من نوع .
Responsepublic/index.php ── autoload + تهيئة (bootstrap) التطبيق
▼
HTTP Kernel::handle($request)
▼
Bootstrappers ── env, config, providers (register + boot)
▼
Global middleware ── (TrustProxies, HandleCors, ...)
▼
Router dispatch ── مطابقة route
▼
Route / group middleware ── (auth, throttle, verified, ...)
▼
Controller (or closure) ── منطقك → يعيد Response
▼
Response ──▶ client
▼
Kernel::terminate ── terminable middleware (مثل حفظ session، logging)
index.php مكوّن Composer autoload ويهيّئ (bootstrap) حاوية التطبيق.Request ويشغّل الـ bootstrappers: تحميل env + config، وتسجيل (register) وتشغيل (boot) الـ service providers (هنا يتم ربط الـ framework وربط الـ bindings الخاصة بك).auth، throttle، verified) يعمل قبل الـ controller؛ ويمكن لكل منها أن يقطع المسار مبكراً.Response (view، JSON، redirect). ومنطق "ما بعد" في الـ middleware يعمل بينما تطفو الاستجابة عائدةً للخارج.Kernel::terminate الـ middleware من نوع terminable للأعمال المؤجَّلة.// app/Http/Middleware/Timing.php → 3/5. middleware
public function handle($request, Closure $next)
{
$request->attributes->set('started', microtime(true));
$response = $next($request); // يمرّر إلى الطبقة التالية / الـ controller
$response->headers->set('X-Time', '...'); // منطق "ما بعد"
return $response;
}
// routes/web.php → 4. التوجيه (+ middleware)
Route::get('/items/{id}', [ItemController::class, 'show'])->middleware('auth');
// app/Http/Controllers/ItemController.php → 6. الـ controller
public function show(int $id)
{
return response()->json(Item::findOrFail($id));
}
دورة حياة Laravel مبنية حول service container وmiddleware pipeline، لذا فإن معرفة الترتيب — bootstrap/providers، ثم global middleware، ثم routing، ثم route middleware، ثم controller، ثم terminate — تخبرك بالضبط أين تنتمي المصادقة، وتحديد المعدل (rate limiting)، وCORS، والتنظيف. وهي تفسّر لماذا يجب أن يُربَط (bound) service في provider قبل حقنه (inject)، ولماذا يرفض throttle طلباً قبل أن يعمل الـ controller الخاص بك، وكيفية تأجيل الأعمال البطيئة إلى terminable middleware حتى لا يُترَك المستخدم في الانتظار.
مكتبة من أسئلة مقابلات تقنية المعلومات مع إجابات مفصّلة — من المبتدئ إلى المتقدم.
تبرع