Laravel 9.31 发布
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` 不会被改变...
User::withoutTimestamps(
fn () => $user->update(['reserved_at' => now()])
);
Vite manifestHash 函数
Enzo Innocenzi 为 Vite
贡献了一个manifestHash()
方法,如果清单存在,它将返回一个唯一的哈希。这可用于使资产无效。
更多详情请参考 Pull Request #44136。
伪批次
Taylor Otwell 贡献的伪批次:
目前很难测试一个批处理是否被取消,或者一个作业是否向批处理加入了额外的作业。你必须手动创建
FakeBatch
并覆盖cancel
/add
方法等。
这样就解决了这些问题。
[$job, $batch] = (new TestJob)->withFakeBatch();
$job->handle();
$this->assertTrue($batch->cancelled());
$this->assertNotEmpty($batch->added);
模型 getAppends()
方法
Arturo Rodríguez 为模型添加了一个访问器方法,以获得被追加到模型数组的访问器。这对自定义模型映射很有用:
$model->getAppends();
Str warp 静态方法
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 为 Illuminate\Foundation\Vite
贡献了 Macroable
trait 特性,以创建与你 JS 配置匹配的别名:
Vite::macro('image', fn ($asset) => $this->asset("resources/images/{$asset}"));
// Usage: <img src="{{ Vite::image('profile.png') }}" ... >
更多详情请看 Pull Request #44198。
发行说明
你可以在 GitHub 上看到以下完整的新功能和更新列表以及 9.30.0 和 9.31.0 的区别。以下发行说明直接来自 changelog:
v9.31.0
新增
- 为
PostgreSQL
增加了独特的可延缓的初始延迟常量 (#44127) - 请求声明周期持续时间处理程序 (#44122)
- 增加了
Model::withoutTimestamps(...)
(#44138) - 为
Illuminate\Foundation\Vite
添加了manifestHash
函数 (#44136) - 增加了对太空操作符
<=>
的支持 (#44154) - 增加了
Illuminate/Database/Connection::registerDoctrineType()
,可以接受新声明的类型的对象和类名 (#44149) - 增加了 伪批处理
Fake Batches
(#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数据库(#44153)
- 改进对 Eloquent 的 UUID 和 ULID 支持 (#44146)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。