Laravel9.X新特性全解析

好的,Laravel 9.X 版本引入了一些重要的新特性和改进。以下是一些关键特性的概述:

1. 强制要求 PHP 8.0 或更高版本

Laravel 9 要求使用 PHP 8.0 或更高版本,充分利用了 PHP 8 的新特性(如命名参数、联合类型、属性等)。

2. Symfony Mailer

Laravel 9 将默认的邮件传输层从 Swift Mailer 迁移到了 Symfony Mailer。这提供了更现代的邮件发送功能,并支持更多传输协议。

3. Flysystem 集成升级

文件存储系统升级到了 Flysystem 的第 3 版(league/flysystem:^3.0),提供了更好的性能和更简洁的 API。

4. 路由缓存改进

路由缓存的生成方式进行了优化,现在支持缓存闭包路由(通过转换为控制器操作实现)。这使得大型应用的路由缓存更加高效。

bash 复制代码
php artisan route:cache

5. Eloquent 访问器/修改器简化

Eloquent 模型的访问器和修改器语法更加简洁。例如:

php 复制代码
// 旧版本
public function getNameAttribute($value) {
    return strtoupper($value);
}

// Laravel 9
protected function name(): Attribute {
    return Attribute::make(
        get: fn ($value) => strtoupper($value)
    );
}

6. Enum 属性转换支持

Laravel 9 新增了对 PHP 原生 Enum 类型的属性转换支持:

php 复制代码
use App\Enums\UserRole;

class User extends Model {
    protected $casts = [
        'role' => UserRole::class,
    ];
}

7. 匿名存根迁移

新增了 make:migration 命令的 --stub 选项,允许使用自定义存根模板生成迁移文件,提高了灵活性。

8. 测试工具增强

  • HTTP 客户端重试机制 :新增 retry() 方法支持请求失败时自动重试。
  • Parallel Testing :通过 php artisan test --parallel 支持并行测试,显著提升测试速度。

9. Ignition 错误页升级

默认的错误调试页面工具 Ignition 升级到了最新版本,提供了更清晰的错误信息和解决方案建议。

10. Blade 组件改进

  • 可选属性 :通过 $attributes->has() 判断组件是否传递了可选属性。
  • 属性值提取$attributes->get('value', 'default') 支持默认值。

11. when()/unless() 方法链式调用

查询构造器和 Eloquent 构建器的 when()unless() 方法现在支持链式调用,使条件查询更流畅:

php 复制代码
User::when($request->has('search'), function ($query) {
    $query->where('name', 'like', "%{$request->search}%");
})->unless($request->has('admin'), function ($query) {
    $query->where('role', 'user');
});

12. has() 方法的嵌套支持

Eloquent 的 has() 方法现在支持嵌套关系查询:

php 复制代码
// 查询有活跃订单的用户
User::has('orders.active')->get();

13. 新的 str()to_route() 辅助函数

  • str():提供流畅的字符串操作(基于 Illuminate\Support\Stringable)。
  • to_route():生成路由 URL 并支持重定向。

14. LTS 支持

Laravel 9 是长期支持版本,提供 2 年的错误修复和** 3 年的安全更新**。


这些改进显著提升了开发体验、性能和安全特性。建议结合官方升级指南进行版本迁移。

相关推荐
许愿OvO2 小时前
大规模Web服务Nginx核心配置与性能优化实战
linux·nginx·性能优化
许愿OvO2 小时前
Tomcat部署与Nginx整合实战
运维·nginx·tomcat
学不完的3 小时前
Nginx
linux·运维·nginx·运维开发
Exquisite.3 小时前
4、云原生 --- nginx
运维·nginx
2301_8049475820 小时前
nginx
java·服务器·nginx
ideal-cs1 天前
总结:Nginx配置文件案例说明
java·运维·nginx·nginx配置文件
旭日跑马踏云飞1 天前
【Nginx】相关优化
运维·javascript·nginx
逸尘散修1 天前
Nginx 限流实战全指南:从原理到生产级配置详解
nginx
71ber1 天前
RHCSE 实战笔记:Nginx 和 Tomcat --企业高并发应用的杀手锏
linux·nginx·tomcat