Laravel 9.x 版本引入了多项重要改进,以下是核心特性总结:
1. PHP 8.0+ 依赖
- 最低要求 PHP 8.0,充分利用新语法(如属性注解、联合类型)。
- 弃用 PHP 7.x 支持,推动现代 PHP 实践。
2. Symfony 6.x 组件升级
- 底层依赖升级至 Symfony 6.0,提升稳定性和性能。
- 兼容 Symfony 的新类型安全特性(如
Response类型严格化)。
3. Flysystem 第3版集成
-
文件存储系统升级至 Flysystem v3,支持更灵活的云存储适配器。
-
示例配置:
php'disks' => [ 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), ], ];
4. Eloquent 访问器改进
-
访问器支持类型声明,减少冗余代码:
php// 旧版 public function getNameAttribute($value) { return ucfirst($value); } // 新版(类型化) public function getNameAttribute(string $value): string { return ucfirst($value); }
5. 路由模型绑定优化
-
简化路由模型绑定语法:
phpRoute::get('/users/{user}', function (User $user) { return view('user.profile', ['user' => $user]); }); -
支持自定义解析逻辑:
phpRoute::get('/posts/{post:slug}', [PostController::class, 'show']);
6. 测试辅助函数增强
-
新增
test()全局函数,替代$this->actingAs():phptest('user can update profile', function () { $user = User::factory()->create(); $this->actingAs($user) ->put('/profile', ['name' => 'New Name']) ->assertRedirect('/dashboard'); });
7. Ignition 错误页升级
- 默认错误页工具 Ignition 更新至最新版,提供更清晰的调试堆栈和解决方案建议。
8. 隐式路由绑定变更
-
路由隐式绑定不再自动匹配
id字段,需显式指定:php// 旧版:自动匹配 id Route::get('users/{user}', ...); // 新版:需指定字段(如 id 或 slug) Route::get('users/{user:id}', ...);
总结
Laravel 9.x 聚焦于 现代 PHP 实践 、开发者体验优化 和 性能提升,升级建议:
- 确保环境满足 PHP 8.0+ 要求。
- 检查路由模型绑定和隐式绑定逻辑。
- 利用新语法重构访问器/修改器。
提示:完整迁移指南参考 Laravel 9 Upgrade Documentation。