Her Laravel request'i tek bir front controller olan public/index.php üzerinden girer, HTTP Kernel tarafından bir yığını ve aracılığıyla bir 'a yönlendirilir ve bir döndürür — ardından middleware çalışır.
Responsepublic/index.php ── autoload + uygulamayı bootstrap et
▼
HTTP Kernel::handle($request)
▼
Bootstrappers ── env, config, providers (register + boot)
▼
Global middleware ── (TrustProxies, HandleCors, ...)
▼
Router dispatch ── route eşleştir
▼
Route / group middleware ── (auth, throttle, verified, ...)
▼
Controller (veya closure) ── mantığınız → bir Response döndürür
▼
Response ──▶ client
▼
Kernel::terminate ── terminable middleware (ör. session kaydetme, logging)
index.php Composer autoload'u yükler ve uygulama container'ını bootstrap eder.Request'i alır ve bootstrapper'ları çalıştırır: env + config yükle, service provider'ları register et ve boot et (framework ve binding'lerinizin bağlandığı yer burasıdır).auth, throttle, verified) controller'dan önce çalışır; her biri kısa devre yapabilir.Response (view, JSON, redirect) döndürür. Middleware'in "after" mantığı response geri kabararak çıkarken çalışır.Kernel::terminate, ertelenen iş için terminable middleware'i çalıştırır.// app/Http/Middleware/Timing.php → 3/5. middleware
public function handle($request, Closure $next)
{
$request->attributes->set('started', microtime(true));
$response = $next($request); // sonraki katmana / controller'a ilet
$response->headers->set('X-Time', '...'); // "after" mantığı
return $response;
}
// routes/web.php → 4. routing (+ 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'in lifecycle'ı service container ve middleware pipeline etrafında kurulur, bu yüzden sırayı bilmek — bootstrap/providers, sonra global middleware, sonra routing, sonra route middleware, sonra controller, sonra terminate — auth, rate limiting, CORS ve temizliğin tam olarak nereye ait olduğunu söyler. Bir servisin inject edilmeden önce neden bir provider'da bind edilmesi gerektiğini, throttle'ın controller'ınız çalışmadan önce bir request'i neden reddettiğini ve kullanıcının bekletilmemesi için yavaş işleri terminable middleware'e nasıl erteleyeceğinizi açıklar.
Junior'dan Senior'a detaylı cevaplarla bir BT mülakat soruları kütüphanesi.
Bağış Yap