Laravel 9.22中重新设计的Artisan Serve命令

210 阅读2分钟

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 命令。

New artisan serve comparison

在MailMessage中附加一个文件阵列

Delowar HossainTim 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)

修复了

  • 当属性默认为枚举时,对model:show的修复(#43370)
  • 修复了DynamoDB锁的0秒持续时间(#43365)
  • 修复了覆盖全局locale的问题(#43426)

改变了

  • 控制台输出运行时间中的整数毫秒(#43400)。
  • 改进了服务Artisan命令(#43375)。