laravel 10之前的版本和之后的版本的kenel文件的位置和区别
下面把 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的链式闭包里。
本文来自博客园,作者:Carvers,转载请注明原文链接:https://www.cnblogs.com/carver/articles/19014752

浙公网安备 33010602011771号