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 特性,例如 readonly 属性。
Laravel Pennant
Laravel Pennant是由 Laravel 团队创建的一个包,它将随 Laravel 10 一起提供,并为您的应用程序提供功能标志。
功能标志使您能够自信地逐步推出新的应用程序功能、A/B 测试新的界面设计、补充基于主干的开发策略等等。
这个包是核心团队提供的官方包系列中的最新包,这意味着我们现在拥有一个构建良好且经过良好测试的包,为我们提供了一些强大的功能。
Laravel 的进程层
Laravel Process 服务让测试和运行 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);
Process 层包括开箱即用的丰富功能,例如:
- 在运行之前构建流程实例的 Fluent 流程方法
- 接收到的过程输出处理
- 异步进程
- 进程池
- 丰富的测试功能通过
fake()
- 防止测试期间的杂散过程
测试过程从未如此简单。
Laravel 10 骨架中的原生类型声明
在 Laravel 10 中,应用程序骨架代码将具有原生类型声明。这意味着框架生成的用户空间中的任何代码都将具有类型提示和返回类型。我们的文章讨论了有关该方法的注意事项,我们认为您将来在创建新项目时会喜欢添加的类型。
添加类型的方式为 Laravel 项目带来了最新的 PHP 类型提示功能,而不会破坏框架级别的向后兼容性:
- 返回类型
- 方法参数
- 尽可能删除冗余注释
- 在闭包参数中允许用户土地类型
- 不包括类型属性
可调用验证规则是默认的
从 Laravel 10 开始,可调用验证规则现在是默认的。当您通过 artisan 创建新的验证规则时,这是您可以期待的:
# Laravel 9 creates a rule class that implements the # Illuminate\Contracts\Validation\Rule interface artisan make:rule Uppercase # Laravel 9 flag to create an invokable and implicit rule artisan make:rule Uppercase --invokable artisan make:rule Uppercase --invokable --implicit # Laravel 10 creates an invokable rule by default artisan make:rule Uppercase # Laravel 10 implicit rule artisan 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
分支的比较中发现的一些弃用:
- 删除各种弃用Pull Request #41136
- 删除Pull Request 中弃用的日期属性 #42587
- 拉取请求中的删除
handleDeprecation
方法#42590 - 删除不推荐使用的
assertTimesSent
方法Pull Request #42592 - 删除 deprecated
ScheduleListCommand
的$defaultName
属性419471e - 删除不推荐使用的
Route::home
方法Pull Request #42614 - 删除已弃用的
dispatchNow
功能Pull Request #42591
测试 Laravel 10
如果你现在想开始测试 Laravel 10,你可以使用--dev
标志将它安装在一个新项目中:
laravel new <your-project-name> --dev
升级到 Laravel 10
最简单的升级方法是使用Laravel Shift,它可以自动始终使您的应用程序保持最新状态,或者遵循升级指南。
和更多...
您还可以查看官方发布页面以查找可用的更新信息。