Laravel 9.34 Released
Laravel 团队发布了 9.33 和 9.34,引入了 Laravel Precognition、自闭合模板组件的短属性语法等。
注意:我们还介绍了 Laravel 9.33 中发布的关键新功能,这些新功能是在典型的每周发布之间的上周五发布的。
Laravel Precognition (9.33)
Tim MacDonald 贡献了 Precognition 的介绍。请查看 PR #44339 以深入了解 Precognition 提供的功能。 这是 TLDR:
-
Precognition 是一项新的框架功能,允许开发人员为其用户创建新的和改进的体验。
-
Precognition 引入了请求/响应标头、中间件,在某些情况下还引入了 Laravel 以独特方式响应的全局帮助器。
-
当一个 Precognition 请求进入 Laravel 时,直到控制器被执行。 这包括所有中间件、路由模型绑定解析、表单请求验证等。
你真的应该阅读 PR #44339 来查看如何利用这个令人兴奋的新功能的示例!
自闭合模板组件的简短属性语法 (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 「Backed Enum」 (9.34)
Nuno Maduro 为支持的枚举提供了 模板渲染支持。 以下面的路由视图为例:
// routes/web.php
Route::get('/', function () {
return view('dashboard', ['role' => UserRoles:: ADMIN]);
});
鉴于 $role
变量,它现在将在模板中正确呈现:
Hello, {{ $role }}.
<!-- ❌ Before: TypeError: htmlspecialchars(): Argument #1 ($string) must be of type string -->
<!-- ✅ After: Hello, Admin. -->
新增 cc() 方法到 MailFake (9.33)
Adrian Nürnberger 贡献了缺失的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);
发行说明
你可以在下面查看新功能和更新的完整列表以及 9.33.0 和 9.34.0 之间的差异 在 GitHub 上。 以下发行说明直接来自 changelog:
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 支持添加了缺失的 morphs 方法 (#44364)
- 介绍 Laravel Precognition (#44339)
- 新增方法
Illuminate/Routing/Route::flushController()
(#44386)
修复
- 修复 PHPUnit 的 Annotations 注册表上的内存泄漏 (#44324, #44336)
- 使用配置
prefix
修复了Illuminate/Filesystem/FilesystemAdapter::url()
(#44330) - 修复 Timebox 类中「从浮点数到整数的隐式转换失去精度」错误(#44357)
修改
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。