Laravel 10.7版本发布

2023-06-01 00:00:00 laravel 版本 发布

Laravel PHP框架本周发布了10.7版本,包括由Laravel社区的各个开发者贡献的新功能和改进。

其中一个值得注意的新增功能是Process层中的pipe()方法, 它允许命令按顺序运行,并将前一个命令的输出传递给下一个命令的输入。

另一个新增功能是Validator类中的setValue()方法,它使开发者能够设置一个给定属性的值。

此外, 该版本还包括对Laravel社区报告的各种错误和问题的修复。


让我们仔细看看Laravel 10.7中引入的功能和变化:


为进程层增加了一个pipe()方法

Wendell Adriel为Process层贡献了一个pipe()方法. 

这个方法将依次运行命令,并将前一个命令的输出传递给下一个命令的输入:

$pipe = Process::pipe(function ($pipe) {
    $pipe->command('cat test.txt'),
    $pipe->command('grep -i "foo"'),
});
 
$pipe->run()->output(); // "foo"

当你需要将一组命令的结果连锁起来时,这可能很方便。


验证器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的描述。

https://github.com/laravel/framework/pull/46716#issue-1659076495


在测试中检查可调用的事件监听器

Luke Kuzmish贡献了断言可调用事件监听器的能力,这在以前是不可能的:

Event::assertListening(
    StationAssistanceRequested::class,
    CreateDemandWorkOrder::class, // has __invoke() method
);

详见问题#46652和拉动请求#46683。

https://github.com/laravel/framework/issues/46652
https://github.com/laravel/framework/pull/46683


发布说明

你可以在GitHub上看到以下完整的新功能和更新列表以及10.6.0和10.7.1之间的差异。

下面的发行说明直接来自更新日志:

https://github.com/laravel/framework/compare/v10.6.0...v10.7.1
https://github.com/laravel/framework/blob/3b66c4d62ceb225b681ee79e427134e035a2a6f1/CHANGELOG.md#v1071-2023-04-11


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)
服务器命令: 修正服务器在无效的$requestPort上的关闭输出(#46726)
修复了没有JoinClause实例时的嵌套连接(#46712)
修正查询生成器whereBetween方法与碳日期周期(#46720)。

已更改

移除Illuminate/Routing/PendingSingletonResourceRegistration中creatable()/destroyable()方法中不必要的参数(#46677)
对未捕获的异常返回非零退出代码(#46541)

转:

https://laravel-news.com/laravel-10-7-0

相关文章