行业资讯 Laravel 9 移转到 Laravel 12 有那些规则的变动

Laravel 9 移转到 Laravel 12 有那些规则的变动

92
 

从 Laravel 9 升级到 Laravel 12 是一个涉及多个版本迭代的过程,以下是分阶段的规则变动总结及升级注意事项:

一、Laravel 9 → Laravel 10 的主要变动

  1. PHP 版本要求提升

  • 最低支持 PHP 8.1(Laravel 9 支持 PHP 8.0)。

  • 影响:需确保服务器环境兼容,检查代码中是否使用已废弃的 PHP 8.0 特性。

  1. 功能标志管理(Laravel Pennant)

  • 新增官方功能标志包,支持渐进式功能发布和 A/B 测试。

  • 适配建议:若使用自定义功能标志逻辑,可迁移至 Pennant 以简化实现。

  1. 验证规则默认可调用

  • 通过 Artisan 生成的验证规则默认支持 __invoke() 方法。

  • 代码调整:旧版需显式实现 passes()message() 方法的规则需更新。

  1. 弃用功能移除

  • 移除 Route::homeedispatchNow 等方法。

  • 替代方案:使用 url('/') 替代路由首页,队列分发改用 dispatch_now()

  1. 类型声明增强

  • 框架代码全面添加原生类型提示(如 public function handle(Request $request): Response)。

  • 影响:自定义代码需遵循严格类型检查,避免类型不匹配错误。

二、Laravel 10 → Laravel 11 的主要变动

  1. 目录结构重构

  • 移除目录app/Exceptionsapp/Http/Middleware

  • 配置集中化:配置整合到 .env 文件,可通过 php artisan config:publish 生成独立配置文件。

  • 路由精简:默认路由文件从 4 个(web.php, api.php, console.php, channels.php)精简为 2 个(需手动生成 API 路由)。

  1. 核心组件调整

  • Http/Kernel 移除:请求生命周期由 Bootstrap/App 类管理,需调整依赖旧内核的中间件注册逻辑。

  • 模型 Casts 方法化:属性定义从 $casts 数组改为 casts() 方法。

     // Laravel 9 写法
     protected $casts = ['is_admin' => 'boolean'];
    
     // Laravel 11 写法
     public function casts(): array
     {
         return ['is_admin' => 'boolean'];
     }
  1. PHP 版本要求提升至 8.2

  • 兼容性检查:确保依赖包支持 PHP 8.2,使用 composer outdated 检测过时依赖。

  1. 安全与性能优化

  • 配置级联功能:支持删除未使用的配置项,简化调试。

  • Dumpable Trait:统一调试方法,替代原有 dd()dump()

三、Laravel 11 → Laravel 12 的主要变动

  1. 维护性版本,变动较小

  • 聚焦上游依赖更新(如 Symfony 6.2+),无重大破坏性变更。

  • PHP 版本支持:维持 PHP 8.2-8.4,建议升级至 PHP 8.4 以利用最新优化。

  1. 新入门套件引入

  • 提供 React/Vue/Livewire 模板,集成 Shadcn UI 组件和 WorkOS AuthKit。

  • 适配建议:新建项目可直接使用模板,现有项目无需强制迁移。

  1. 依赖管理优化

  • 更新 Laravel Installer 至最新版:composer global require laravel/installer

四、跨版本升级通用注意事项

  1. 备份与测试

  • 升级前备份代码、数据库及配置文件。

  • 使用 php artisan test 运行单元测试,手动验证关键功能(如认证、队列、邮件)。

  1. 依赖冲突解决

  • 运行 composer update 后若出现依赖冲突,通过 composer why 分析原因,选择性更新或替换包。

  1. 自动化工具辅助

  • 使用 Laravel Shift 自动处理大部分代码适配(如路由、模型调整)。

  • 官方升级命令:php artisan laravel-new:upgrade(Laravel 11+ 支持)。

  1. 长期支持策略

  • Laravel 12 提供 18 个月 Bug 修复和 2 年安全更新,建议生产环境优先升级。

五、常见升级问题示例

  1. 路由文件缺失

  • 现象:升级后 API 路由失效。

  • 解决:运行 php artisan install:api 生成 routes/api.php

  1. 中间件失效

  • 原因:Laravel 11 移除了 app/Http/Middleware 目录。

  • 修复:将自定义中间件移至 app/Middleware,并在 Kernel.php 中注册。

  1. 配置加载错误

  • 现象:环境变量未生效。

  • 解决:检查 .env 文件格式,运行 php artisan config:clear 清除缓存。

通过以上分阶段适配和工具辅助,可最大限度减少升级风险。建议参考官方升级指南(Laravel 9→10Laravel 10→11Laravel 11→12)逐步操作。


更新:2025-04-09 15:14:00 © 著作权归作者所有
QQ
微信
客服

.