Laravel 9.x 是 Laravel 框架的一个重要版本更新,于 2022 年 2 月发布。它引入了许多新特性、改进和优化,重点在于提升性能、开发体验和与现代 PHP 版本的兼容性。以下是 Laravel 9.x 的主要特性总结,我将逐步解释每个特性,并辅以代码示例(如适用)来帮助理解。内容基于官方文档和社区共识,确保真实可靠。

1. PHP 8.0 最低要求

  • Laravel 9.x 要求 PHP 8.0 或更高版本,充分利用了 PHP 8 的新特性,如联合类型、属性(attributes)和命名参数。这提升了框架的性能和类型安全。
  • 示例:使用 PHP 8 属性简化代码。
    // 在 Laravel 9 中,利用属性定义路由
    #[Route('/api/users')]
    public function index()
    {
        return User::all();
    }
    

2. Symfony Mailer 替换 Swift Mailer

  • Swift Mailer 被弃用,改用 Symfony Mailer 作为默认邮件驱动。这带来了更好的性能和更现代的 API。
  • 示例:配置邮件发送。
    // .env 文件配置
    MAIL_MAILER=smtp
    MAIL_HOST=mailhog
    MAIL_PORT=1025
    MAIL_FROM_ADDRESS=hello@example.com
    

3. Flysystem 3.x 升级

  • 文件存储系统升级到 Flysystem 3.x,改进了文件操作接口,支持更灵活的磁盘管理和云存储集成。
  • 示例:使用新 API 存储文件。
    use Illuminate\Support\Facades\Storage;
    
    // 存储文件
    Storage::disk('s3')->put('file.txt', 'Hello Laravel 9!');
    

4. Eloquent 访问器和修改器改进

  • 利用 PHP 8 属性,访问器和修改器更简洁。现在可以直接在模型中使用 get{Attribute}Attributeset{Attribute}Attribute 方法,无需额外配置。
  • 示例:定义访问器。
    // User 模型中
    class User extends Model
    {
        public function getNameAttribute($value)
        {
            return ucfirst($value);
        }
    }
    

5. 路由绑定改进

  • 路由绑定更灵活,支持自定义解析逻辑。例如,可以在路由定义中指定绑定键,或在控制器中覆盖绑定行为。
  • 示例:自定义路由绑定。
    // 在 RouteServiceProvider 中
    public function boot()
    {
        Route::model('user', User::class);
    }
    

6. 新的查询构建器接口

  • 引入了强类型查询构建器接口,增强了 IDE 支持和静态分析。这减少了错误,并提升了开发效率。
  • 示例:使用类型提示查询。
    // 查询用户
    $users = User::where('active', true)->get();
    

7. 匿名迁移类

  • 允许使用匿名类定义数据库迁移,简化了迁移文件结构,避免了类名冲突。
  • 示例:创建匿名迁移。
    use Illuminate\Database\Migrations\Migration;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Support\Facades\Schema;
    
    return new class extends Migration {
        public function up()
        {
            Schema::create('posts', function (Blueprint $table) {
                $table->id();
                $table->string('title');
            });
        }
    };
    

8. Laravel Scout 数据库驱动

  • 新增了数据库作为搜索后端的选项,无需额外服务如 Algolia 或 Elasticsearch。适合小型应用。
  • 示例:配置 Scout 使用数据库。
    // 在 .env 文件中
    SCOUT_DRIVER=database
    

9. 改进的异常处理页面

  • 错误页面(如 404 或 500)更美观和用户友好,提供了更多调试信息,便于开发者快速定位问题。

10. 新助手函数

  • 引入了 str()to_route() 函数:
    • str():简化字符串操作,如 str('Hello')->upper() 输出 HELLO
    • to_route():用于重定向到命名路由,比 redirect()->route() 更简洁。
  • 示例:使用 to_route()
    // 在控制器中
    return to_route('users.index');
    

11. PHP 8.1 支持

  • 完全兼容 PHP 8.1 特性,如枚举和只读属性,确保框架现代化。

12. 最小化配置

  • 移除了许多冗余配置选项,简化了 config 文件。例如,默认配置更精简,减少了开发者的设置负担。

总结

Laravel 9.x 是一次重大升级,专注于性能优化、开发体验提升和 PHP 8+ 的集成。如果你是 Laravel 用户,建议升级到 9.x 版本以利用这些新特性。升级前请确保环境满足 PHP 8.0+ 要求,并参考 官方升级指南 进行平滑迁移。如果有具体问题,如升级步骤或特性细节,欢迎进一步询问!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐