Laravel 9.30 发布

Laravel 团队发布了 9.29 和 9.30,其中包含只读文件系统选项、作用域文件系统驱动程序、丢弃模型更改的能力等等。

注意:我们上次介绍了 Laravel 9.28.0,因此此发布帖子涵盖了 9.29 和 9.30。

只读文件系统配置选项

Frank de Jonge 有助于将文件系统磁盘配置为以只读模式运行。这确保了磁盘上不可能有写操作,这在访问要确保不操纵任何文件的存储时很有用。

这是 pull request 中针对此功能的配置示例:

$disk = $filesystem->build([
    'driver' => 'local',
    'read-only' => true,
    'root' => 'my-custom-path',
    'url' => 'my-custom-url',
    'visibility' => 'public',
]);

作用域文件系统驱动程序

Frank de Jonge 提供了作用域文件系统驱动程序,它提供了一种重用磁盘配置的方法。以下是pull request 描述中的示例:

[
    's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'url' => env('AWS_URL'),
        'endpoint' => env('AWS_ENDPOINT'),
        'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
        'throw' => false,
    ],
    's3_videos' => [
        'driver' => 'scoped',
        'prefix' => 'path/for/videos',
        'disk' => 's3',
    ],
]

为所有的 “make” 命令增加一个强制选项

James Brooks 为所有的 make:* 命令增加了一个 --force 选项,这在你需要重新创建文件时很有帮助。

“Required if accepted” 验证规则

Pascal Baljet 贡献了一个 required_if_accepted 验证规则,当另一个字段被接受通过时(值为 yeson1, 或 true)则验证下的字段是必填的:

Validator::make([
    'is_company'   => 'on',
    'company_name' => 'Apple',
], [
    'is_company'   => 'required|boolean',
    'company_name' => 'required_if_accepted:is_company',
]);

舍弃 Eloquent 模型的变动

Mior Muhammad Zaki 贡献了一个 discardChanges() 函数能够舍弃模型属性的变动并重置其原始状态:

$user = new EloquentModelStub([
    'name' => 'Taylor Otwell',
]);

$user->getOriginal('name'); // null

$user->getAttribute('name'); // Taylor Otwell
$user->discardChanges();
$user->getAttribute('name'); // null

判断附件是否存在

Andrew Minion 有助于确定给定的附件是否包含在邮件中。添加了三种方法,可以帮助在测试中断言附件:

$mailable = new InvoicePaid($user);

// Test normal attachment.
$this->assertTrue(
    $mailable->hasAttachment('Receipt.pdf')
);

// Test attachment from storage disk.
$this->assertTrue(
    $mailable->hasAttachmentFromStorageDisk('s3', 'invoices', $user->latest_invoice->name)
);

// Test raw attachment.
$this->assertTrue(
    $mailable->hasAttachedData('12345', 'confirmation.txt')
);

发行说明

你可以在下方查看新功能和更新的完整列表以及 [9.28.0 和 9.30.0] 之间的差异 (https://github.com/laravel/framework/compare/v9.27.0...v9.28.0)在 GitHub 上。以下发行说明直接来自 changelog

v9.30.0

添加

  • 向记录器添加了 stop_buffering 配置选项 (#44071)
  • 添加只读文件系统适配器装饰作为配置选项(#44079)
  • 添加了作用域文件系统驱动程序 (#44105)
  • 为所有 make 命令添加强制选项 (#44100)

修复

  • 修复了不具有数组条件的查询生成器 (#44083)

更改

  • 将事件传递到队列监听器的 viaQueue 和 viaConnection (#44080)
  • 提高批处理作业的可测试性 (#44075)
  • 在 cron 表达式中允许任何类型的空格 (#44110)

v9.29.0

添加

  • 添加了RequiredIfAccepted 验证规则 (#44035)
  • 添加 Illuminate/Foundation/Vite::assetPath() (#44037)
  • 添加了放弃 Eloquent 模型更改的功能 (#43772)
  • 增加了确定附件是否存在的能力 Illuminate/Mail/Mailable (#43967)
  • 添加 Illuminate/Support/Testing/Fakes/BusFake::assertNothingBatched() (#44056)

Reverted

Fixed

  • 避免在 PHP 8.1 上将 null 传递给参数异常 (#43951)
  • 将记住我的 Cookie 持续时间与 CookieJar 过期时间对齐 (#44026)
  • 使用 Enumerable 修复 Stringable 类型提示 (#44030)
  • 修复了带有文件响应的中间件“SetCacheHeaders” (#44063)

Changed

  • 不要为 PlanetScale 的 MySQL 兼容 Vitess 引擎的队列作业弹出使用锁 (#44027)
  • 避免在自定义存根模板中匹配“使用” Illuminate/Console/GeneratorCommand.php (#44049)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/laravel-9-30-0

译文地址:https://learnku.com/laravel/t/71818

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

什么时候10.0

1周前 评论

赶紧出 10 吧,我已经准备好了,并且希望能够大的惊喜

1周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!