Каждый запрос в Laravel входит через единый front controller, public/index.php, управляется HTTP Kernel через стек middleware и к , и возвращает — после чего выполняется middleware.
Каждый запрос в Laravel входит через единый front controller, public/index.php, управляется HTTP Kernel через стек middleware и к , и возвращает — после чего выполняется 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 (напр. сохранение сессии, logging)
index.php загружает автозагрузку Composer и выполняет bootstrap контейнера приложения.Request и запускает bootstrappers: загружает env + config, регистрирует и бутстрапит (boot) service providers (именно здесь связываются фреймворк и ваши bindings).auth, throttle, verified), выполняется до controller; каждый может прервать цепочку.Response (view, JSON, redirect). Логика "after" у middleware выполняется, когда ответ всплывает обратно наружу.Kernel::terminate выполняет terminable middleware для отложенной работы.// 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', '...'); // логика "after"
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 построен вокруг service container и конвейера middleware, поэтому знание порядка — bootstrap/providers, затем global middleware, затем routing, затем route middleware, затем controller, затем terminate — точно указывает, где место для auth, ограничения частоты запросов, CORS и очистки. Он объясняет, почему сервис должен быть связан (bind) в провайдере до того, как он будет внедрён, почему throttle отклоняет запрос до выполнения вашего controller, и как отложить медленную работу в terminable middleware, чтобы пользователю не пришлось ждать.
Библиотека вопросов для IT-собеседований с подробными ответами — от Junior до Senior.
Поддержать