Laravel 10.x重磅更新:全新特性速览

Laravel 10.x重磅更新:全新特性速览 好的Laravel 10.x 版本引入了多项重要更新和增强功能。以下是一些主要的新特性最低 PHP 要求提升Laravel 10 要求的最低 PHP 版本是 PHP 8.1。开发者需要确保运行环境满足此要求。新的测试框架支持Laravel 10 引入了对PHPUnit 10的支持。这是一个重要的测试框架更新。更重要的是Laravel 10 默认包含了Pest 测试脚手架。当使用laravel new创建新项目时可以选择使用 Pest 作为默认的测试框架通过--pest选项或者后续通过artisan test:pest命令添加。Pest 提供了更简洁、表达力更强的测试语法。Artisan 命令增强--type选项为make:controller、make:model等 Artisan 命令新增了--type选项。这使得创建特定类型的资源更加明确和方便例如php artisan make:controller UserController --typesingleton php artisan make:model User --typeresourcemake:class命令新增了一个make:class命令用于快速生成标准的 PHP 类文件简化了非 Eloquent 模型或控制器类的创建。路由改进路由绑定改进在路由中定义可选参数时如/{param?}如果该参数未被提供Laravel 现在会尝试绑定该参数为null值而不是跳过绑定。这提高了路由参数绑定的可预测性。进程交互Process::run()增强Laravel 的ProcessFacade 的run()方法现在返回一个Illuminate\Process\ProcessResult对象。该对象提供了更丰富的方法来与运行的外部进程进行交互例如output()获取进程的标准输出。errorOutput()获取进程的错误输出。throw()如果进程执行失败非零退出码则抛出异常。successful()检查进程是否成功退出退出码为0。这使得在应用程序中处理外部命令的执行结果更加方便和强大。文件存储升级Flysystem v3Laravel 的文件存储系统升级到了 Flysystem 的第 3 个主要版本。这带来了性能提升和一些底层接口的变化。虽然大多数应用代码无需修改但自定义文件存储适配器可能需要相应更新。验证规则增强unique和exists规则支持指定连接现在可以在使用unique:table,column和exists:table,column验证规则时通过第三个参数指定数据库连接名称email unique:mysql.users,email_address安全增强XSS 保护默认开启Laravel 10 默认在所有 Blade 模板中启用了xss转义行为相当于在所有模板顶部添加了verbatim。这有助于防范跨站脚本攻击 (XSS)。如果确实需要输出原始 HTML必须显式使用{!! $variable !!}语法。弃用策略Laravel 10 明确列出了将在 Laravel 11 中被移除的功能。开发者应留意这些弃用警告以便在升级前进行必要的代码调整。一些被标记为弃用的功能包括dateCast 的serialize方法。Illuminate\Container\Container::bindIf()。Illuminate\Support\Traits\EnumeratesValues::unlessEmpty()和::unlessNotEmpty()。Mail::alwaysTo、Mail::alwaysReplyTo和Mail::alwaysFrom方法。$datesEloquent 属性应使用$casts。assertSent(Sync)和assertNotSent(Sync)邮件测试方法应使用assertSentSync/assertNotSentSync。原生类型声明框架本身以及生成的骨架代码如通过 Artisan 命令创建的控制器、中间件等开始更广泛地使用 PHP 的原生类型声明如void,int,string,array等返回值类型和参数类型。这提高了代码的清晰度和可维护性。这些特性共同提升了 Laravel 10 在性能、开发体验、安全性和现代化方面的表现。开发者升级时需注意 PHP 版本要求、测试框架的变化Pest、Flysystem 升级以及弃用功能的处理。