Laravel团队发布了9.22版本,重新设计了artisan serve命令,流畅的文件验证规则构建器,以及更多。让我们来看看最新的Laravel 9版本中的所有优点。
流畅的文件验证规则
Luke Downing贡献了一个文件验证规则对象,提供了一个像Password 验证规则一样的流畅接口。
// Before
$request->validate([
'file' => ['required', 'file', 'mimes:mp3,wav,aac', 'max:12287'],
'image' => ['required', 'file', 'image', 'min:2048', 'max:12287', Rule::dimensions()->maxWidth(1000)->maxHeight(500)],
]);
// After
$request->validate([
'file' => ['required', File::types(['mp3', 'wav', 'aac'])->smallerThan(12 * 1024)],
'image' => ['required', File::image()->atLeast(2 * 1024)->smallerThan(12 * 1024)->dimensions(Rule::dimensions()->maxWidth(1000)->maxHeight(500))],
]);
Pull Request #43271有更多关于可用方法的细节.此外,验证文档中还有关于使用新的流畅规则生成器验证文件的细节。
改进的Artisan服务命令
在Artisan的全新外观之后,Nuno Maduro贡献了一个改进的artisan serve 命令。

在MailMessage中附加一个文件阵列
Delowar Hossain和Tim MacDonald合作为邮件信息提供了一个attachMany() 方法。
$mailable->attachMany([
'/forge.svg',
'/vapor.svg' => ['as' => 'Vapor Logo.svg', 'mime' => 'text/css'],
new class() implements Attachable
{
public function toMailAttachment()
{
return Attachment::fromPath('/foo.jpg')->as('bar')->withMime('image/png');
}
},
]);
请注意,你也可以多次调用attach() --当你想用数组格式在一次调用中附加它们时,这个方法是作为一种方便添加的。
在邮件中添加条件行
El Shino贡献了在邮件中添加条件行的能力。
// With a conditional
$message->line('Your order has been canceled');
if ($this->amount > 0) {
$message->line("The refunded amount is {$this->amount}");
}
// Using lineIf
$message->line('Your order has been canceled')
->lineIf($this->amount > 0, "The refunded amount is {$this->amount}");
支持文件系统中的多种哈希算法
Douglas Medeiros贡献了对文件系统中各种哈希算法的支持。现在你可以指定一个哈希算法作为一个可选的第二个参数。
File::hash($path)
// 196b0f14eba66e10fba74dbf9e99c22f => default md5
File::hash($path, 'sha256')
// 19c451aedfb24c338a9a2a5c31d553ed77e7cdefc655035f390176ac24066051
版本说明
你可以在GitHub上看到以下完整的新功能和更新列表,以及9.21.0和9.22.1之间的差异。
v9.22.1
已添加
- 为广播事件添加了唯一的锁定(#43416)
修复了
- 修复了Windows下的Artisan服务命令(#43437)
v9.22.0
已添加
- 增加了在MailMessage中附加文件数组的功能(#43080)
- 为MailMessage添加了条件行(#43387)
- 添加对多种哈希算法的支持到
Illuminate/Filesystem/Filesystem::hash()(#43407)