Laravel 9.31版本发布

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

Laravel团队2022年9月21日发布了 9.31,其中包含请求生命周期持续时间处理程序、在不更改时间戳的情况下更新模型、用于测试的假批次等等:


请求生命周期持续时间处理程序

当请求生命周期长于给定时间限制时,Tim MacDonald贡献了一个回调处理程序:

use Carbon\CarbonInterval as Interval;
use Illuminate\Contracts\Http\Kernel;
 
public function boot()
{
    if ($this->app->runningInConsole()) {
        return;
    }
 
    $kernel = $this->app[Kernel::class];
    $kernel->whenRequestLifecycleIsLongerThan(
        Interval::seconds(1),
        fn ($startedAt, $request, $response) => /* ... */
    );
}

该回调类似于Laravel 9.18 Released中发布的累积数据库查询时间,但针对的是请求生命周期。


模型“无时间戳”功能

Tim MacDonald贡献了一个不会改变的静态withoutTimestamps()方法:updated_at

$user = User::first();
 
 
// `updated_at` is not changed...
 
User::withoutTimestamps(
    fn () => $user->update(['reserved_at' => now()])
);


Vite manifestHash 函数

Enzo Innocenzi为该类贡献了一个manifestHash()方法,Vite如果清单存在,该方法将返回一个唯一的哈希值。这可用于使资产无效。有关详细信息,请参阅拉取请求 #44136。


假批次

Taylor Otwell提供了假批次:

>目前很难测试批处理是否被作业取消或作业是否向批处理添加了其他作业。您必须手动创建 FakeBatch 并覆盖取消/添加方法等。
这解决了这个问题。
[$job, $batch] = (new TestJob)->withFakeBatch();
$job->handle();
 
$this->assertTrue($batch->cancelled());
$this->assertNotEmpty($batch->added);


模型 getAppends() 方法

Arturo Rodríguez向 Model 添加了一个访问器方法,以获取附加到模型数组的访问器。这对于自定义模型映射可能很有用:

$model->getAppends();


str wrap 静态方法

Steve Bauman添加了一个缺失的静态Str::wrap()方法,该方法只能通过以下方式获得Stringable:

Str::wrap('-bar-', 'foo', 'baz'); // 'foo-bar-baz'
str('-bar-')->wrap('foo', 'baz'); // 'foo-bar-baz'


宏指令

Tim MacDonald贡献了这个Macroable特性来Illuminate\Foundation\Vite创建与你的 JS 配置匹配的别名:

Vite::macro('image', fn ($asset) => $this->asset("resources/images/{$asset}"));
 
// Usage: <img src="{{ Vite::image('profile.png') }}" ... >

有关更多详细信息,请参阅拉取请求 #44198。


发行说明

您可以在下面查看新功能和更新的完整列表以及GitHub 上9.30.0 和 9.31.0之间的差异。

以下发行说明直接来自变更日志:

https://github.com/laravel/framework/compare/v9.30.0...v9.31.0
https://github.com/laravel/framework/blob/1d8e86193fd1740606a836f25043e84fe78c562d/CHANGELOG.md#v9310---2022-09-20


v9.31.0

添加

为 PostgreSQL 添加了唯一可延迟的初始延迟常量 ( #44127 )
请求生命周期持续时间处理程序 ( #44122 )
添加模型::withoutTimestamps(...) ( #44138 )
添加 manifestHash 函数到 Illuminate\Foundation\Vite ( #44136 )
/Illuminate/Collections/Traits/EnumeratesValues::operatorForWhere()在( #44154 )中添加了对运算符 <=> 的支持
添加 Illuminate/Database/Connection::registerDoctrineType() 可以接受对象以及新学说类型的类名(#44149)
添加了假批次(#44104,#44173)
添加Model::getAppends()(#44180)
添加了缺少的 Str::wrap() 静态方法 ( #44207 )
添加了要求symfony/uid(#44202)
使 Vite 可宏化 ( #44198 )

修复

异步修复Illuminate/Http/Client/PendingRequest(#44179)
使用 PHP_CLI_SERVER_WORKERS 环境变量修复 artisan serve 命令 ( #44204 )
修复了InteractsWithDatabase::castAsJson($value)错误地处理 SQLite 数据库 ( #44196 )

改变

改进 Blade 编译异常消息 ( #44134 )
改进测试失败输出 ( #43943 )
迁移时提示创建 MySQL db ( #44153 )
改进对 Eloquent 的 UUID 和 ULID 支持 ( #44146 )


转:

https://laravel-news.com/laravel-9-31-0

相关文章