Chaque requête Laravel entre par un unique front controller, public/index.php, est pilotée par le HTTP Kernel à travers une pile de et le vers un , et retourne une — après quoi le middleware s'exécute.
Chaque requête Laravel entre par un unique front controller, public/index.php, est pilotée par le HTTP Kernel à travers une pile de et le vers un , et retourne une — après quoi le middleware s'exécute.
Responsepublic/index.php ── autoload + bootstrap de l'app
▼
HTTP Kernel::handle($request)
▼
Bootstrappers ── env, config, providers (register + boot)
▼
Global middleware ── (TrustProxies, HandleCors, ...)
▼
Router dispatch ── associe route
▼
Route / group middleware ── (auth, throttle, verified, ...)
▼
Controller (ou closure) ── votre logique → retourne une Response
▼
Response ──▶ client
▼
Kernel::terminate ── terminable middleware (ex. sauvegarde de session, logging)
index.php charge l'autoload de Composer et bootstrappe le container de l'application.Request et exécute les bootstrappers : chargement de env + config, register et boot des service providers (c'est ici que le framework et vos bindings se câblent).auth, throttle, verified) s'exécute avant le controller ; chacun peut court-circuiter.Response (view, JSON, redirect). La logique « après » du middleware s'exécute pendant que la response remonte.Kernel::terminate exécute le terminable middleware pour le travail différé.// app/Http/Middleware/Timing.php → 3/5. middleware
public function handle($request, Closure $next)
{
$request->attributes->set('started', microtime(true));
$response = $next($request); // passe à la couche suivante / controller
$response->headers->set('X-Time', '...'); // logique « après »
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));
}
Le cycle de vie de Laravel est construit autour du service container et du middleware pipeline, donc connaître l'ordre — bootstrap/providers, puis global middleware, puis routing, puis route middleware, puis controller, puis terminate — vous indique exactement où placer auth, rate limiting, CORS et nettoyage. Cela explique pourquoi un service doit être bind dans un provider avant d'être injecté, pourquoi throttle rejette une requête avant l'exécution de votre controller, et comment différer le travail lent vers du terminable middleware afin que l'utilisateur ne soit pas laissé en attente.
Une bibliothèque de questions d'entretien IT avec des réponses détaillées — du Junior au Senior.
Faire un don