Laravel 9.2 发布
Laravel 团队发布了9.2.0
版本,增加了数组 keyBy
方法, Eloquent 属性静态构造方法, 将 Laravel CORS 包移入到 Laravel 框架中
Attribute::make
方法
@ARI 为 Eloquent Attribute
类贡献了一个静态构造方法, 它提供了如下的便利:
// 使用 new 关键词
return (new Attribute(
get: fn ($value) => strtoupper($value),
set: fn ($value) => strtoupper($value)
))->withoutObjectCaching();
// 新的 make() 静态构造方法
return Attribute::make(
get: fn ($value) => strtoupper($value),
set: fn ($value) => strtoupper($value)
)->withoutObjectCaching();
Arr::keyBy
方法
Douglas Medeiros 贡献了一个 Arr::keyBy()
方法,它的作用类似于集合 keyBy()
方法:
$array = [
['id' => '123', 'data' => 'abc', 'device' => 'laptop'],
['id' => '345', 'data' => 'def', 'device' => 'tablet'],
['id' => '345', 'data' => 'hgi', 'device' => 'smartphone'],
];
Arr::keyBy($array, 'id');
/*
[
'123' => ['id' => '123', 'data' => 'abc', 'device' => 'laptop'],
'345' => ['id' => '345', 'data' => 'hgi', 'device' => 'smartphone']
// 原始数组的第二个元素被最后一个元素所覆盖,因为他们有相同的 id
]
*/
期望输出包含测试的断言
Francisco Madeira 贡献了expectsOutputToContain
测试方法来断言 artisan
命令包含一个输出子串:
$this->artisan('Hello World')
->expectsOutputToContain('Hello');
使用 Mail::alwaysTo
时添加 X
标头
Craig Morris 贡献了在使用 Mail::alwaysTo()
方法时在开发中添加 X 标头:
在开发环境中使用
Mail::alwaysTo
时,原来的To、Cc 和Bcc 会丢失。 这使得在测试过程中很难确定电子邮件的去向。
此 PR 将原始到、抄送和密件抄送添加到电子邮件中的 X-Headers 中,以便可以检索此信息,同时阻止将电子邮件发送给这些收件人。
这对于调试预期的 to
、cc
和 bcc
字段很有用,但仅将电子邮件发送到指定的 alwaysTo
地址。 查看 Pull Request #41101 了解详情。
将 Laravel CORS 集成到框架中
Dries Vints 将 fruitcake/laravel-cors 包迁移到 Laravel 框架中:
主要原因是我们除了要消除框架的另一个依赖外,还要删除我们所依赖的循环依赖。
代码的所有功劳都归于@fruitcake 的@barryvdh。 感谢您维护该软件包这么久!
Str::betweenFirst
方法
Yoeri Boven 提供了一个 betweenFirst()
方法,它可以截取指定字符串,给定的两个值之间最短的部分:
Str::betweenFirst('[a]ab[b]', '[', ']'); // a
Str::betweenFirst('foofoobar', 'foo', 'bar'); // foo
Str::betweenFirst('hannah', 'ha', 'ah'); // nn
Str::betweenFirst('dddabcddd', 'a', 'c')); // b
允许为规则对象指定自定义消息
Ryan Chandler 提供了一种在使用 规则
对象进行验证时指定自定义错误消息的方法。通过此更新,您可以向消息数组提供自定义消息:
$request->validate(
[
'foo' => [new Example]
],
[
Example::class => '我的自定义消息在这里!'
]
);
发行说明
您可以在下面查看新功能和更新的完整列表以及在 GitHub 上 9.1.0 和 9.2.0 之间的差异 。以下发行说明直接来自 变更日志:
v9.2.0
新增
- 添加了
Illuminate/Database/Eloquent/Casts/Attribute::make()
(#41014) - 添加了
Illuminate/Collections/Arr::keyBy()
(#41029) - 将 expectsOutputToContain 添加到 PendingCommand。 (#40984)
- 添加了使用 JsonSerializable 实例提供 HTTP 客户端方法的功能 (#41055)
- 添加了
Illuminate/Filesystem/AwsS3V3Adapter::getClinet()
(#41079) - 在 Builder::whereRelation 中添加了对枚举的支持 (#41091)
- 使用 Mail::alwaysTo 时添加了 X 标头 (#41101)
- 在查询中添加支持按位运算符 (#41112)
- 将 Laravel CORS 集成到框架中 (#41137)
- 添加了
Illuminate/Support/Str::betweenFirst()
(#41144) - 允许为 Rule 对象指定自定义消息 (#41145)
修复
- 修复了包含 UNICODE 异常的队列 Failed_jobs 插入问题 (#41020)
- 修复了尝试在 Mock 上记录弃用的问题 (#41057)
- 修复 loadAggregate 未正确应用强制转换 (#41050)
- 不转换 JsonSerializable 实例到 HTTP 客户端方法中的数组 (#41077)
- 修复解析 config(‘database.connections.pgsql.search_path’) (#41088)
- Eloquent: firstWhere 返回 Object 而不是 NULL (#41099)
- 修复了使用提供的合格 updated_at 更新的问题(#41133)
- 修复了 MailChannel 的 setPriority 调用(#41120)
- 修复 route:list 命令输出 (#41177)
- 修复数据库迁移 $connection 属性 (#41161)
变更的
- 游标分页:将原始列转换为表达式 (#41003)
- 在 Paginator 上将
$perPage
转换为整数 (#41073) - 恢复 S3 客户端额外选项 (#41097)
- 在
Illuminate/Notifications/HasDatabaseNotifications.php
中的notifications()
中使用latest()
(#41095) - 删除重复查询以查找批处理 (#41121)
- 删除
FormRequest::validated()
中的冗余检查 (#41115) Illuminate/Support/Facades/Storage::fake()
已更改 (#41113)- 使用 PHP >= 7.4 提供的合并相等 (#41174)
- 用
is_countable()
简化一些条件 (#41168) - 将
AWS
临时URL
选项传递给createPresignedRequest
方法 (#41156) - 让 Multiple* 异常保持找到的记录和项目的数量 (#41164)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
高认可度评论:
俄罗斯进攻乌克兰都没有你Laravel升级版本快
俄罗斯进攻乌克兰都没有你Laravel升级版本快
还沉浸在 9.0,一下就 9.2 了,按照这个速度 5 月就能看到 Laravel 10.0 了。
Dries Vints 将 fruitcake/laravel-cors 包迁移到 Laravel 框架中:
为啥我吧 composer 的这个包移除 就报错了 - .-
laravel9.2
我现在还在小心翼翼的把自己5.x项目慢慢升级中,到现在我项目还没几个用8.x,结果都9.2了,升级的太快了,我跟不上部队了都。