Laravel 10.19版本发布
Laravel  /  管理员 发布于 1年前   254
本周,Laravel 团队发布了 v10.19,新增了集合百分比方法、自定义事件发现类解析、动态队列监听器延迟等功能:
单词包字符串方法
Josh Bonnick 为 Laravel 字符串 API 提供了 wordWrap 方法,它可以使用字符限制分割字符串中的字符串。该方法是 PHP wordwrap 函数的封装器:
use Illuminate\Support\Str;
$text = "A very long woooooooooooord."
// Str
Str::wordWrap(string: $text, characters: 8);
/*
A very
long
wooooooo
ooooord.
*/
// Stringable
str($text)->wordWrap(string: $text, characters: 8);
为集合添加百分比方法
Wendell Adriel 为集合提供了一个 percentage() 方法,允许您使用真值测试根据自定义逻辑计算百分比:
$collection = new $collection([
['name' => 'Taylor', 'foo' => 'foo'],
['name' => 'Nuno', 'foo' => 'bar'],
['name' => 'Dries', 'foo' => 'bar'],
['name' => 'Jess', 'foo' => 'baz'],
]);
$collection->percentage(fn ($value) => $value['foo'] === 'foo'); // 25.00
$collection->percentage(fn ($value) => $value['foo'] === 'bar'); // 50.00
$collection->percentage(fn ($value) => $value['foo'] === 'baz'); // 25.00
$collection->percentage(fn ($value) => $value['foo'] === 'test'); // 0.00
在事件发现中自定义类分辨率的功能
@bastien-phi 提供了为事件发现自定义类解析的功能:
>此 PR 增加了自定义翻译方式的功能,并在此类 DDD 结构中解锁了事件发现功能。
下面是 Pull Request #48031 测试中自定义回调的示例,说明了如何使用该功能:
use Illuminate\Foundation\Events\DiscoverEvents;
DiscoverEvents::guessClassNamesUsing(function (SplFileInfo $file, $basePath) {
return Str::of($file->getRealPath())
->after($basePath.DIRECTORY_SEPARATOR)
->before('.php')
->replace(DIRECTORY_SEPARATOR, '\\')
->ucfirst()
->prepend('Illuminate\\')
->toString();
});
动态指定监听器延迟
@CalebW 为监听器定义了一个 withDelay() 方法,该方法可以确定队列监听器的延迟:
class Listener implements ShouldQueue
{
public function __invoke(Event $event): void
{
// ...
}
public function withDelay(Event $event): int
{
return $event->fooBar
? <short_delay>
: <long_delay>;
}
}
为救援辅助程序添加动态返回类型
Choraimy Kroonstuiver 提供了一个 PHPDoc 更新,以帮助静态分析工具理解 rescue() 辅助函数的通用返回类型。
这里没有代码示例,但更新后的 Docblock 看起来如下:
/**
* Catch a potential exception and return a default value.
*
* @template TRescueValue
* @template TRescueFallback
*
* @param callable(): TRescueValue $callback
* @param (callable(\Throwable): TRescueFallback)|TRescueFallback $rescue
* @param bool|callable $report
* @return TRescueValue|TRescueFallback
*/
function rescue(callable $callback, $rescue = null, $report = true)
{
// ...
}
// Examples:
assertType('int|null', rescue(fn () => 123));
assertType('int', rescue(fn () => 123, 345));
assertType('int', rescue(fn () => 123, fn () => 345));
您可以在 PHPStan 博客上了解有关 "示例泛型 "的更多信息。
为 createMany 和 createManyQuietly 添加计数参数
Jordan Welch 提供了向模型工厂的 createMany() 和 createManyQuietly() 传递整数的功能,以创建相应数量的模型:
// Before:
$users = User::factory()->createMany([[], [], []]);
// After:
$users = User::factory()->createMany(3);
$this->assertCount(3, $users);
$this->assertInstanceOf(Eloquent\Collection::class, $users);
版本说明
您可以在 GitHub 上查看以下新功能和更新的完整列表,以及 10.18.0 和 10.19.0 之间的差异。
以下版本说明直接来自更新日志:
https://github.com/laravel/framework/compare/v10.18.0...v10.19.0
https://github.com/laravel/framework/blob/294661d8f297ca60e4752ed66d34a3b11a97970e/CHANGELOG.md#v10190---2023-08-15
v10.19.0
[10.x] 修正更新 HasUniqueIds 中的拼写错误,由 @iamcarlos94 在 https://github.com/laravel/framework/pull/47994 提供。
[10.x] 优雅地处理科学符号,作者 @timacdonald,原文地址:https://github.com/laravel/framework/pull/48002
[10.x] 修复 throw_if 和 throw_unless 的 docblocks,作者 @AbdelElrafa,载于 https://github.com/laravel/framework/pull/48003
[10.x] 在 Str 中添加 wordWrap 作者 @joshbonnick 发布于 https://github.com/laravel/framework/pull/48012
[10.x] 由 @rybakihor 在 https://github.com/laravel/framework/pull/48000 提供的修复使用 isolatableId 以相同批次 ID 同时运行时,失败作业的 RetryBatchCommand 重叠的问题
[10.x] 修复路由 uri 为空时 assertRedirectToRoute 问题(由 @khernik93 在 https://github.com/laravel/framework/pull/48023 提供
[10.x] 修复使用 --pending 选项但没有待定迁移时显示空表的问题(由 @TheBlckbird 在 https://github.com/laravel/framework/pull/48019 中提供
[10.x] @oleksiikhr 在 https://github.com/laravel/framework/pull/48015 中提出的修复强制使用写 DB 连接的问题
[10.x] @timacdonald 在 https://github.com/laravel/framework/pull/47942 中提出的在生成器创建更新值时使用模型投递的问题。
[10.x] 修复 Collection::search 和 LazyCollection::search 的返回类型,作者 @bastien-phi 发布于 https://github.com/laravel/framework/pull/48030
[10.x] 在事件发现中添加自定义类解析的功能,作者 @bastien-phi 发布于 https://github.com/laravel/framework/pull/48031
[10.x] 通过 @WendellAdriel 在 https://github.com/laravel/framework/pull/48034 中为集合添加百分比方法
[10.x] 当参数描述包含 -- 时,修复控制台中的解析错误,作者 @rxrw 发布于 https://github.com/laravel/framework/pull/48021
[10.x] 允许监听器使用 withDelay 动态指定延迟时间(由 @CalebDW 发布于 https://github.com/laravel/framework/pull/48026
[10.x] 为救援助手添加动态返回类型,作者 @axlon,地址:https://github.com/laravel/framework/pull/48062
[10.x] createMany & createManyQuietly 添加计数参数 by @JHWelch in https://github.com/laravel/framework/pull/48048
[10.x] 默认组件槽的属性支持 by @royduin in https://github.com/laravel/framework/pull/48039
[10.x] 为模型序列化添加 WithoutRelations 属性 by @Neol3108 in https://github.com/laravel/framework/pull/47989
[10.x] 可将 WithoutRelations 应用于整个类 by @cosmastech in https://github.com/laravel/framework/pull/48068
[10.x] createMany & createManyQuietly 使参数可选 by @JHWelch in https://github.com/laravel/framework/pull/48070
转:
https://laravel-news.com/laravel-10-19-0
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号