Laravel团队发布了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为Vite 类贡献了一个manifestHash() 方法,如果清单存在,它将返回一个唯一的哈希值。这可用于废止资产。
假的批处理
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'
Macroable vite
Tim MacDonald将Macroable 特质贡献给了Illuminate\Foundation\Vite ,以创建符合你的JS配置的别名。
Vite::macro('image', fn ($asset) => $this->asset("resources/images/{$asset}"));
// Usage: <img src="{{ Vite::image('profile.png') }}" ... >
发布说明
你可以在GitHub上看到以下完整的新功能和更新列表以及9.30.0和9.31.0之间的差异。下面的发行说明是直接来自于更新日志。
v9.31.0
已添加
- 为PostgreSQL增加了独特的可延缓的初始延缓常量(#44127)。
- 请求生命周期持续时间处理程序(#44122)
- 已添加 Model::withoutTimestamps(...)(#44138)
- 为Illuminate\Foundation\Vite添加了manifestHash函数(#44136)
- 在
/Illuminate/Collections/Traits/EnumeratesValues::operatorForWhere()中增加了对操作符<=>的支持(#44154) - 增加了Illuminate/Database/Connection::registerDoctrineType()可以接受对象以及新教义类型的类名(#44149)
- 添加了虚假批次(#44104,#44173)。
- 添加了
Model::getAppends()(#44180) - 添加了缺失的Str::wrap()静态方法(#44207)
- 添加了 require
symfony/uid(#44202) - 使得Vite可以进行宏操作(#44198)
修复了
Illuminate/Http/Client/PendingRequest中的异步修复(#44179)- 修复了artisan serve命令与PHP_CLI_SERVER_WORKERS环境变量(#44204)。
- 修正
InteractsWithDatabase::castAsJson($value)不正确地处理SQLite数据库(#44196)