Laravel 9.x重磅升级:十大新特性解析

Laravel 9.x 是 Laravel 框架的重要版本更新,于2022年2月发布,主要特性如下:

1. PHP 8.0+ 强制依赖

  • 最低要求 PHP 8.0
  • 全面支持 PHP 8.1 新特性(枚举、只读属性等)
php 复制代码
// PHP 8.1 枚举示例
enum Status: string {
    case Pending = 'pending';
    case Active = 'active';
}

2. Symfony 6.x 组件升级

  • 邮件组件升级至 Symfony Mailer(替换 Swift Mailer)
  • 改进的邮件发送队列处理
php 复制代码
Mail::to('user@example.com')->queue(new OrderShipped($order));

3. 模型访问器/修改器新语法

  • 更简洁的模型属性处理方式
php 复制代码
// 传统方式
public function getNameAttribute($value) { /* ... */ }

// 9.x 新语法
protected function name(): Attribute {
    return Attribute::make(
        get: fn ($value) => strtoupper($value),
        set: fn ($value) => strtolower($value),
    );
}

4. 匿名迁移类

  • 避免迁移类命名冲突
php 复制代码
use Illuminate\Database\Migrations\Migration;

return new class extends Migration {
    public function up() { /* ... */ }
};

5. 路由控制器改进

  • 路由组控制器自动前缀
php 复制代码
// 所有路由自动应用 UserController
Route::controller(UserController::class)->group(function () {
    Route::get('/profile', 'showProfile');
    Route::put('/profile', 'updateProfile');
});

6. SCOUT 数据库引擎

  • 新增轻量级全文搜索方案
bash 复制代码
composer require laravel/scout
php artisan scout:install

7. 测试辅助函数增强

  • freezeTime() 时间冻结
  • travelTo() 时间穿梭
php 复制代码
// 测试时间控制
$this->freezeTime();
$this->travelTo(now()->addDays(7));

8. Flysystem 3.x 集成

  • 云存储操作标准化
php 复制代码
Storage::disk('s3')->put('file.jpg', $content);

9. Ignition 错误页升级

  • 增强的错误调试界面
  • 代码片段上下文展示优化
  • 解决方案建议功能

10. 查询构造器接口

  • 强类型查询构建支持
php 复制代码
DB::table('users')->where('votes', '>', 0)->get();

其他重要更新

模块 变更内容
前端脚手架 移除 Bootstrap,默认使用 Vite
事件监听器 支持监听器队列自动发现
任务调度 新增 everyMinute() 快捷方法
加密机制 使用 OpenSSL 替代 Mcrypt

建议升级前使用官方升级指南进行兼容性检查:

bash 复制代码
composer create-project laravel/laravel example-app
相关推荐
PHP实战开发录1 小时前
PHP接口超时后为什么任务还在跑
开发语言·前端·php·开发
ECT-OS-JiuHuaShan2 小时前
哲学是迭代学,数学是拓扑学
开发语言·人工智能·学习·算法·机器学习·php·拓扑学
北京盛世宏博17 小时前
物联网传感器通信协议:帧字段规划、CRC 校验、异常包过滤方案
网络·物联网·php
三84417 小时前
PHP Session 反序列化:防御加固、审计套路与总结
web安全·php·安全加固·session反序列化
中科三方18 小时前
DNS拨测到底在拨测什么?
开发语言·github·php·dns·云拨测
企业通信技术笔记19 小时前
企业IM内外网隔离部署:DNS、证书、WebSocket与跨网接口设计
websocket·网络协议·架构·php·信息与通信
szarron20 小时前
RF Demo Kit|NanoVNA 射频演示测试板完整上手教程,滤波器、衰减器、SOLT 校准学习板
开发语言·人工智能·学习·php·射频工程·频谱仪
sbjdhjd1 天前
从 assert 动态调用报错到临时文件链路:PHP 5.6 与 7.3 授权靶场中的短 payload 复盘 | (17字符绕过)
安全·网络安全·数据挖掘·开源·云计算·php·字符绕过
sbjdhjd1 天前
从 7 字符文件名拼接到二维数组取值:PHP 无参函数限制下的受控靶场复盘 | (7字符绕过)
网络·nginx·安全·网络安全·云计算·php·apache