Laravel团队发布了9.29和9.30

93 阅读3分钟

Laravel团队发布了9.29和9.30,增加了只读文件系统选项,一个范围文件系统驱动,能够丢弃模型的变化,等等。

注意: 我们上次报道的是Laravel 9.28.0,所以这次发布的帖子同时涵盖了9.29和9.30。

只读文件系统配置选项

Frank de Jonge为配置文件系统磁盘以只读模式运行做出了贡献.这保证了磁盘上不可能有任何写操作,这在访问你想确保不对任何文件进行操作的存储时很有用。

下面是这个功能的拉动请求中的一个配置例子。

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

局限性文件系统驱动

Frank de Jonge贡献了范围内的文件系统驱动,这使得重用磁盘配置的方式成为可能。下面是拉动请求描述中的一个例子。

[
    '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 标志,这在你需要重新创建一个文件时很有帮助。

"接受时需要 "验证规则

Pascal Baljet贡献了一个required_if_accepted 的验证规则,该规则确保在另一个字段被接受的情况下,被验证的字段是必须的(一个值为yes,on,1, 或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')
);

版本说明

你可以在GitHub上看到以下完整的新功能和更新列表以及9.28.0和9.30.0之间的差异。下面的发布说明直接来自更新日志

v9.30.0

新增

  • 为记录器添加了stop_buffering配置选项(#44071)。
  • 添加了只读文件系统适配器装饰作为一个配置选项(#44079)。
  • 增加了范围文件系统驱动(#44105)
  • 为所有make命令添加强制选项(#44100)

修复了

  • 修正了带有数组条件的QueryBuilder whereNot(#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)

已恢复

修正了

  • 避免在PHP8.1上传递null参数的异常(#43951)。
  • 将 Remember Me Cookie 持续时间与 CookieJar 过期时间对齐(#44026)
  • 修正Stringable类型提示与Enumerable(#44030)。
  • 修复了中间件 "SetCacheHeaders "与文件响应(#44063)。

已更改

  • 对于PlanetScale的MySQL兼容的Vitess引擎,在队列作业弹出时不使用锁(#44027)
  • 避免在Illuminate/Console/GeneratorCommand.php 自定义Stub模板中匹配'使用'(#44049)。