下面把 Laravel ≤10(含 10) 与 Laravel ≥11(含 11) 的 Kernel 文件 位置、作用、差异一次性拆给你,按“旧版 → 新版”对照阅读即可。
1️⃣ 文件位置对照表
功能 | Laravel 10 及更早 | Laravel 11 及以后 |
---|---|---|
HTTP 请求入口 | app/Http/Kernel.php | 文件已移除 |
CLI / Artisan 入口 | app/Console/Kernel.php | 文件已移除 |
统一配置入口 | 无(分散在以上两个文件) | bootstrap/app.php |
2️⃣ 职责迁移对照
旧职责 | 旧版文件 | 新版实现 |
---|---|---|
全局中间件 | app/Http/Kernel.php → $middleware | bootstrap/app.php → withMiddleware() |
中间件组 web/api | app/Http/Kernel.php → $middlewareGroups | bootstrap/app.php → withRouting(web:, api:, …) |
路由别名 | app/Http/Kernel.php → $routeMiddleware | bootstrap/app.php → withMiddleware()->alias() |
定时任务 schedule | app/Console/Kernel.php → schedule() | routes/console.php 内 Schedule::command() |
自定义 Artisan 命令 | app/Console/Kernel.php → commands() | bootstrap/app.php → withCommands([]) |
异常处理 | app/Exceptions/Handler.php | bootstrap/app.php → withExceptions() |
3️⃣ 代码对比(旧 → 新)
旧版:app/Http/Kernel.php
class Kernel extends HttpKernel
{
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
];
protected $middlewareGroups = [
'web' => [...],
'api' => [...],
];
}
新版:bootstrap/app.php
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
api: __DIR__.'/../routes/api.php',
commands: __DIR__.'/../routes/console.php',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->web(append: \App\Http\Middleware\TrustProxies::class);
});
4️⃣ 一句话总结
-
≤ Laravel 10:
HTTP 相关配置写在app/Http/Kernel.php
,CLI 相关配置写在app/Console/Kernel.php
。 -
≥ Laravel 11:
两个 Kernel 文件 全部移除,所有配置 集中写在bootstrap/app.php
的链式闭包里。