Laravel 10 现已发布!
发布日期 作者 Paul Redmond
Laravel 10 现已发布,包括最低 PHP v8.1 版本、新的 Laravel Pennant 包、可调用验证规则、原生类型声明等...
Laravel 发布计划
在 Laravel 9 之前,主要框架版本每年发布两次,大约每六个月发布一次。从 Laravel 9 开始,核心团队改为了年度发布计划,在 2022 年 2 月发布了 Laravel 9(而不是原计划的 2021 年 9 月)
Laravel 使用各种社区驱动的包以及九个 Symfony 组件来实现框架中的许多功能。Symfony 6.0 预计将在 11 月发布。因此,我们选择将 Laravel 9.0 的发布推迟到 2022 年。
通过推迟发布,我们可以将底层的 Symfony 组件升级到 Symfony 6.0,而不必等到 2022 年 9 月才能进行升级。此外,这也让我们能够更好地进行未来的发布,因为我们的年度发布将始终在 Symfony 发布两个月后进行。
从现在起,发布计划为每年一个主要版本
- Laravel 9:2022 年 2 月 8 日
- Laravel 10:2023 年 2 月 14 日
- Laravel 11:2024 年第一季度
Laravel 9 将继续获得错误修复,直到 **2023 年 8 月 8 日**,安全修复直到 **2024 年 2 月 14 日**。
您可以预期 Laravel 10 错误修复直到 **2024 年 8 月 6 日**,安全修复直到 **2025 年 2 月 14 日**。
让我们看看 Laravel 10 中的一些重大新功能
Laravel 10 不再支持 PHP 8.0
Laravel 框架将在 Laravel 10 中不再支持 PHP <=v8.0
。最低要求版本为 PHP ^8.1
。浏览 master 和 9.x 之间的比较,我们可以预期在框架中使用 8.1 功能,例如只读属性。
Laravel Pennant
Laravel Pennant 是 Laravel 团队创建的包,它将与 Laravel 10 一起发布,并为您的应用程序提供功能标志。
功能标志使您能够自信地逐步推出新的应用程序功能,对新的界面设计进行 A/B 测试,补充基于主干的开发策略,以及更多其他功能。
该包是核心团队提供的官方包系列中的最新成员,这意味着我们现在拥有一个构建良好且经过充分测试的包,它为我们提供了一些很棒的功能。
Laravel 的进程层
Laravel 进程服务 使测试和运行 CLI 进程成为一种梦寐以求的体验。
use Illuminate\Support\Facades\Process; $result = Process::run('ls -la'); $result->successful();$result->failed();$result->exitCode();$result->output();$result->errorOutput();$result->throw();$result->throwIf($condition);
进程层开箱即用地包含丰富的功能,例如
- 流畅的进程方法,可在运行进程之前构建进程实例
- 进程输出处理,并在接收时进行处理
- 异步进程
- 进程池
- 通过
fake()
提供丰富的测试功能 - 在测试期间防止出现无主进程
测试进程从未如此简单。
Laravel 10 骨架中的原生类型声明
在 Laravel 10 中,应用程序骨架代码将具有原生类型声明。这意味着框架生成的任何用户代码都将具有类型提示和返回类型。我们的文章讨论了这种方法的注意事项,我们认为您将来在创建新项目时会喜欢这些新增的类型。
类型以一种将最新的 PHP 类型提示功能引入 Laravel 项目的方式添加,而不会在框架级别破坏向后兼容性
- 返回类型
- 方法参数
- 尽可能删除冗余注释
- 允许用户代码中的闭包参数类型
- 不包括类型化属性
可调用验证规则为默认规则
从 Laravel 10 开始,可调用验证规则 现在为默认规则。当您使用 artisan 创建新的验证规则时,您可以预期以下结果
# Laravel 9 creates a rule class that implements the# Illuminate\Contracts\Validation\Rule interfaceartisan make:rule Uppercase # Laravel 9 flag to create an invokable and implicit ruleartisan make:rule Uppercase --invokableartisan make:rule Uppercase --invokable --implicit # Laravel 10 creates an invokable rule by defaultartisan make:rule Uppercase # Laravel 10 implicit ruleartisan make:rule Uppercase --implicit
测试的配置文件选项
Laravel 10 中即将推出的一项新功能是 --profile
选项,它将使您能够轻松地在应用程序中找到任何速度较慢的测试。
这个 --profile
选项应该有助于保持您的 测试速度,并帮助您修复速度较慢的测试或更好地对它们进行分组,使其更容易不总是运行所有测试。
新的字符串密码助手
Str::password
方法可以生成指定长度的安全随机密码。密码将包含字母、数字、符号和空格的组合。默认情况下,密码长度为 32 个字符
use Illuminate\Support\Str; $password = Str::password(); // 'EbJo2vE-AS:U,$%_gkrV4n,q~1xy/-_4' $password = Str::password(12); // 'qwuar>#V|i]N'
Laravel 9 中的弃用
在 Laravel 9 中标记为弃用的方法将在 Laravel 10 中被删除。我们可以预期发布升级指南将概述所有弃用的方法、潜在的影响评估以及如何更接近发布时进行升级。
以下是在撰写本文时,在 Laravel 框架的 master
分支与 9.x
分支的 比较 中发现的一些弃用
- 删除各种弃用 拉取请求 #41136
- 删除 拉取请求 #42587 中的弃用 dates 属性
- 删除 拉取请求 #42590 中的弃用
handleDeprecation
方法 - 删除弃用
assertTimesSent
方法 拉取请求 #42592 - 删除弃用
ScheduleListCommand
的$defaultName
属性 419471e - 删除弃用
Route::home
方法 拉取请求 #42614 - 删除弃用
dispatchNow
功能 拉取请求 #42591
测试 Laravel 10
如果您想立即开始测试 Laravel 10,您可以使用 --dev
标志在新项目中安装它
laravel new <your-project-name> --dev
升级到 Laravel 10
升级最简单的方法是使用 Laravel Shift,它可以自动始终保持您的应用程序更新,或者按照 升级指南 进行操作。
以及更多...
您也可以查看官方发布页面,以便在更新信息可用时查看。