Laravel 11.x 是面向现代化开发的精简提速版本,强制 PHP 8.2+、重构默认结构、合并配置与路由、移除历史依赖;10.x 是 LTS 版本,要求 PHP 8.1+,侧重稳定兼容与渐进增强。

Laravel 10.x 和 11.x 是两个连续但定位不同的主版本:10.x 是长期支持(LTS)版本,侧重稳定与兼容;11.x 是面向现代化开发的“精简+提速”版本,主动移除历史包袱。差异不只在新增功能,更在于设计哲学的转变——10.x 优化已有能力,11.x 重构默认结构。
PHP 版本与底层要求
两者都放弃对 PHP 7.x 的支持,但门槛进一步提高:
- Laravel 10.x 要求 PHP 8.1+,可直接使用枚举(enum)、只读属性(readonly)、
array_key_first()等特性 - Laravel 11.x 强制 PHP 8.2+,启用更严格的类型检查,并原生支持
Random\Randomizer、new Stringable等新类 - 11.x 移除了对
ramsey/uuid的默认依赖,改用 PHP 8.2 原生 UUID 支持(需启用 ext-uuid)
项目结构与配置方式
11.x 大幅简化默认骨架,10.x 仍保留传统分层结构:
- 11.x 默认 删除
app/Http/Kernel.php和app/Console/Kernel.php,中间件、命令、事件等全部注册入口统一收口到bootstrap/app.php - 11.x 不再生成
config/cors.phpconfig/broadcasting.php等独立配置文件,相关设置合并进config/app.php或直接由环境变量驱动 - 11.x 默认路由文件从
routes/web.php和routes/api.php合并为单文件routes.php(仍可手动拆分) - 10.x 中已弃用的
$dates属性、array_*辅助函数,在 11.x 中彻底不可用,必须改用$casts和Arr::*静态方法
路由、模型与开发效率
两者都增强表达力,但路径不同:
- 10.x 新增
Route::singleton()、支持枚举参数约束(->where('status', PostStatus::class))、withTrashed()模型绑定等渐进式增强 - 11.x 引入
->withRouting(...)配置块,支持模块化路由加载(--module),并默认启用健康检查端点/up(带密钥鉴权) - 11.x 的
make:model -m会自动连带生成工厂(Factory)和填充器(Seeder);10.x 需显式加--factory和--seed - 11.x 移除
RouteServiceProvider,路由绑定逻辑直接写在bootstrap/app.php中的withRouting闭包里
测试、命令与生态工具
测试体验升级是两版共同重点,但 11.x 更进一步标准化:
- 10.x 开始全面支持 Pest 测试框架(
php artisan breeze:install --pest),expect()断言链式调用成为标配 - 11.x 将 Pest 设为推荐默认测试套件,
phpunit.xml极度简化,且test()函数式写法成为官方文档主推风格 - 11.x 新增
php artisan install命令族(如install inertia、install pest),一键集成常用扩展,取代手动 composer require + publish - 11.x 移除
config/queue.php,队列连接完全交由.env控制(QUEUE_CONNECTION=redis),queue:monitor等命令也同步调整
升级不是简单执行 composer update。10.x 到 11.x 是一次“骨架重铸”,尤其涉及中间件注册、路由组织、配置管理等基础层。建议先在 10.x 项目中清理废弃用法(如旧邮件模板、assertSentTo),再按官方迁移指南分阶段过渡。


















