Loading

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 的链式闭包里
posted @ 2025-07-31 10:50  Carvers  阅读(33)  评论(0)    收藏  举报