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 年的安全更新**。


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

相关推荐
yy552724 分钟前
Nginx 安全防护与 HTTPS 部署实战
nginx·安全·https
WangJunXiang626 分钟前
Nginx性能优化与监控笔记
笔记·nginx·性能优化
ego.iblacat1 小时前
Nginx 性能优化与深度监控
运维·nginx·性能优化
百结2142 小时前
Nginx性能优化与监控实战
java·nginx·性能优化
WangJunXiang62 小时前
nginx安全笔记
笔记·nginx·安全
J超会运2 小时前
OpenEuler系统Nginx性能优化全攻略
运维·nginx·性能优化
Wyawsl3 小时前
Nginx性能优化与监控笔记
笔记·nginx·性能优化
xiaokangzhe3 小时前
nginx安全笔记
笔记·nginx·安全
小璐资源网3 小时前
《Nginx安全配置:隐藏版本信息与敏感头》
运维·nginx·安全
卤炖阑尾炎4 小时前
Nginx 安全防护与 HTTPS 部署实战全解析
nginx·安全·https