Laravel 10.7 发布
发布日期 作者 Paul Redmond
Laravel PHP 框架在本周发布了 10.7 版本,其中包含由 Laravel 社区中不同开发者贡献的新功能和改进。
一个值得注意的补充是 Process
层中的 pipe()
方法,它允许按顺序运行命令并将前一个命令的输出传递给下一个命令的输入。
另一个补充是 Validator
类中的 setValue()
方法,它使开发者能够设置给定属性的值。此外,该版本还包含针对 Laravel 社区报告的各种错误和问题的修复。
让我们更仔细地看一下 Laravel 10.7 中引入的功能和更改。
在 Process 层添加了 pipe() 方法
Wendell Adriel 为 Process
层贡献了 pipe()
方法。此方法将按顺序运行命令并将前一个命令的输出传递给下一个命令的输入。
$pipe = Process::pipe(function ($pipe) { $pipe->command('cat test.txt'), $pipe->command('grep -i "foo"'),}); $pipe->run()->output(); // "foo"
当您需要将一组命令的结果链接起来时,这会很方便。
Validator setValue() 方法
Joël Harkes 在 Validator 类中贡献了 setValue()
方法来设置给定属性的值。PR 的作者对该方法的需求进行了以下描述:
对于包开发,我希望能够使规则能够覆盖数据以使验证“类型安全”。现在没有办法有效地内联更新值。我可以调用
setData()
,但它也会完全重新加载规则,并导致严重的性能下降。
// with this PR:$this->validator->setValue($attribute, $value); // previously: very slow!Arr::set($this->data, $attribute, $value);$this->validator->setData($this->data);
如果您想了解更多信息,请查看 Pull Request #46716 的描述。
在测试中检查可调用事件监听器
Luke Kuzmish 贡献了断言可调用事件监听器,这在以前是不可能的。
Event::assertListening( StationAssistanceRequested::class, CreateDemandWorkOrder::class, // has __invoke() method);
请查看 Issue #46652 和 Pull Request #46683 以了解更多信息。
发行说明
您可以在下面看到完整的新功能和更新列表,以及 GitHub 上 10.6.0 和 10.7.1 之间的差异。以下发行说明直接来自 更改日志
v10.7.1
更改
- 更改了
Illuminate/Process/Factory::pipe()
方法。它将立即运行管道 (e34ab39)
v10.7.0
添加
- 允许在未绑定应用时使用
Illuminate/Foundation/Testing/WithFaker
(#46529) - 允许 Event::assertListening 检查可调用事件监听器 (#46683)
- 添加了
Illuminate/Process/Factory::pipe()
(#46527) - 添加了
Illuminate/Validation/Validator::setValue
(#46716)
修复
- PHP 8.0 对 Closure 任务的修复 (#46505)
- 修复了
Illuminate/Validation/ValidationData
中属性中存在斜杠时出现的 preg_split 错误 (#46549) - 修复了
Cache::spy
与Cache::get
的不兼容性 (#46689) - server 命令:修复了在无效的 $requestPort 上关闭输出的 server (#46726)
- 修复了不是 JoinClause 实例时的嵌套联接 (#46712)
- 修复了使用碳日期范围的查询生成器 whereBetween 方法 (#46720)