Laravel团队发布了9.33和9.34版本, 引入了Laravel Precognition, 自闭合blade组件的短语法等。
本文也包含Laravel 9.33中发布的关键新功能,该更新在上周五的每周更新时发布。
Laravel Precognition (9.33)
Tim MacDonald贡献了 Precognition 的介绍。本文不会进行详尽的解释,请查看Pull Request #44339以获得对 Precognition 提供的内容的深入描述。
Precognition 是一项新的框架功能,允许开发人员为其用户创建新的和改进的体验。
Precognition 引入了请求/响应标头、中间件,在某些情况下还引入了 Laravel 以独特方式响应的全局帮助器。
当一个 Precognition 请求进入 Laravel 时,直到控制器被执行。这包括所有中间件、路由模型绑定解析、表单请求验证等。
强烈推荐阅读Pull Request #44339来查看如何使用这个令人兴奋的新功能的示例!
自闭合blade组件的短语法 (9.34)
Perry van der Meer为自闭合刀片组件贡献了短属性语法。此 PR 建立在Laravel 9.32中针对 Blade 组件发布的短属性语法之上:
<!-- current short syntax -->
<x-profile :$userId></x-profile>
<!-- short syntax for self-closing component -->
<x-profile :$userId/>
在 Blade 视图中渲染 PHP 的“BackedEnum” (9.34)
Nuno Maduro为PHP8.1最新的“BackedEnum”贡献了 Blade 渲染支持。以下面的路由视图为例:
// routes/web.php
Route::get('/', function () {
return view('dashboard', ['role' => UserRoles:: ADMIN]);
});
给定$role
变量,它现在将在 Blade 中正确渲染:
Hello, {{ $role }}.
<!-- ❌ Before: TypeError: htmlspecialchars(): Argument #1 ($string) must be of type string -->
<!-- ✅ After: Hello, Admin. -->
在MailFake中添加cc()方法(9.33)
Adrian Nürnberger为mail fakes贡献了缺失的方法cc()
。实现如下:
public function cc($users)
{
return (new PendingMailFake($this))->cc($users);
}
在Stringable contains()和containsAll()中忽略大小写 (9.33)
Jae Toole 为Stringable的contains()
和containsAll()
方法提供了不区分大小写的支持:
// returns true
$this->stringable('taylor')
->contains(['LOR'], true);
// returns true
$this->stringable('taylor otwell')
->containsAll(['TAYLOR', 'OTWELL'], true);
发行说明
您可以在下面查看新功能和更新的完整列表以及GitHub 上9.33.0 和 9.34.0之间的差异。以下发行说明直接来自变更日志:
v9.34.0
添加
修复
更改
- 缺少主机时向 db 命令添加错误输出 ( #44394 )
- 已更改
Illuminate/Database/Schema/ForeignIdColumnDefinition::constrained()
(#44425) - 允许在基于闭包的侦听器中侦听维护模式事件 ( #44417 )
- 允许工厂回收给定类型的多个模型 ( #44328 )
- 改进了多个编辑器和 docker 环境中的 dd 可点击链接 ( #44406 )
v9.33.0
添加
- 添加
Illuminate/Support/Testing/Fakes/MailFake::cc()
(#44319) - 将忽略大小写的 Str::contains 和 Str::containsAll 添加到 Stringable contains 和 containsAll ( #44369 )
- 为 ULID 支持添加了缺失的变形方法 ( #44364 )
- 介绍 Laravel Precognition ( #44339 )
- 添加
Illuminate/Routing/Route::flushController()
(#44386)
修复
- 修复 PHPUnit 的 Annotations 注册表上的内存泄漏(#44324,#44336)
Illuminate/Filesystem/FilesystemAdapter::url()
用配置修复prefix
(#44330)- 修复 Timebox 类中“从浮点数到整数的隐式转换丢失精度”错误(#44357)
更改
来源:https://www.02405.com/archives/7289