好的,Laravel 10.x 于 2023 年 2 月 7 日正式发布,是 Laravel 框架的一个重要更新。以下是其主要特性概述:
🧪 核心变更与要求
-
PHP 版本要求
最低要求提升至 PHP 8.1。
-
原生类型声明
框架核心代码及生成的骨架代码(如控制器、模型)全面引入类型声明(如
string $name),提升代码健壮性。 -
废弃方法清理
移除先前版本标记为废弃的方法(如
$dates属性),需改用$casts或新的日期处理方式:phpprotected $casts = [ 'published_at' => 'datetime', ];
🛠️ 工具链与开发体验
-
Laravel Pennant 集成
提供轻量级功能标志(Feature Flags)管理,支持渐进式发布:
phpFeature::activate('new-design'); if (Feature::active('new-design')) { // 新逻辑 } -
测试工具增强
Artisan test命令新增--parallel选项支持并行测试- 提供更精细的测试数据库选项(如
--schema)
-
Process 组件独立
系统进程交互组件
Illuminate/Process解耦为独立包symfony/process,提升灵活性。
📝 语法与功能优化
-
路由提示改进
Route::controller()支持自动推断路由名称:phpRoute::controller(UserController::class)->group(function () { Route::get('/profile', 'show'); // 自动命名为 'profile' }); -
查询构造器
where()扩展支持闭包语法简化复杂条件:
phpUser::where(function (Builder $query) { $query->where('active', true) ->orWhere('vip', true); }); -
castUsing()方法增强支持自定义 Cast 类注入依赖:
phpprotected function castUsing(array $arguments) { return new CustomCast(app(Service::class)); }
⚠️ 注意事项
- 破坏性变更 :移除
vendor:publish的--tags别名,需改用--tag - 弃用预警 :
$dates属性将在 Laravel 11 中彻底移除 - 类型声明兼容:升级后需检查自定义代码是否满足类型约束
💡 建议:升级前使用 Laravel Shift 自动化工具扫描兼容性问题。
完整变更请参考 官方升级指南。