Laravel 10.25 版本发布
发布时间 作者 Paul Redmond
本周,Laravel 团队发布了 v10.25 版本,其中包含异常限流、Str::take()
方法等等。Laravel 本周修复了许多错误,更新和排版错误,这对社区来说总是受欢迎的!
限流异常
Tim MacDonald 贡献了通过采样/速率限制异常报告来限流异常的功能。您的异常 Handler
类可以定义一个 throttle()
方法,该方法可以灵活地根据异常类型进行速率限制
// App\Exceptions\Handleruse App\Exceptions\ApiMonitoringException;use Illuminate\Broadcasting\BroadcastException;use Illuminate\Cache\RateLimiting\Limit;use Throwable; /** * Throttle incoming exceptions. */protected function throttle(Throwable $e): mixed{ return match (true) { $e instanceof BroadcastException => Limit::perMinute(300), $e instanceof ApiMonitoringException => Lottery::odds(1, 1000), default => Limit::none(), };}
请注意,您可以返回一个 Limit
,您可以使用它来限制记录日志的数量(在示例中每分钟),一个 Lottery
实例,或者如果要为给定的异常类型选择退出,则根本不返回任何内容。
查看有关 限流报告异常 的文档,以开始在 Laravel 10.25 中使用异常限流。
字符串 take() 方法
Moshe Brodsky 为 Str
和 Stringable
贡献了一个 take()
方法,它是在您想要从第一个字符开始时对 substr()
的语法糖
// Beforestr('abcdef')->substr(0, 2) // 'ab'Str::substr('abcdef', 0, 2); // 'ab' // Afterstr('abcdef')->take(2) // 'ab'Str::take('abcdef', 2); // 'ab'
您也可以使用负数从末尾获取字符:
将 bcrypt 轮数增加到 12
Stephen Rees-Carter 贡献了将 bcrypt
轮数从 10
增加到 12
PHP 正在增加默认的 bcrypt 成本 到 11 或 12,以跟上计算能力的提高,因此我们应该在 Laravel 中做同样的事情。当前的默认值为 10,是在 11 年前的 PHP 中设置的,现在不再是一个合适的默认值。
12 似乎是性能和安全之间的最佳选择,正如 Hashcat 团队的一名成员所证实的那样。Symfony 使用 13 的成本,但对于某些服务器来说可能太高了。
有关此更改的更多详细信息,请参阅 拉取请求 #48494。
发行说明
您可以在下面看到新功能和更新的完整列表,以及 10.24.0 和 10.25.0 之间的差异。以下发行说明直接来自 变更日志
v10.25.0
- [10.x] 在 @return EnumeratesValues::ensure() 文档块的标签中修复键类型 @wimski 在 https://github.com/laravel/framework/pull/48456 中
- [10.x] 添加 str()->take($limit) 和 Str::take($string, $limit) @moshe-autoleadstar 在 https://github.com/laravel/framework/pull/48467 中
- [10.x] 限流异常 @timacdonald 在 https://github.com/laravel/framework/pull/48391 中
- [10.x] 修复混合使用内联/块 @php 指令时 blade 无法编译的问题 @CalebDW 在 https://github.com/laravel/framework/pull/48420 中
- [10.x] 修复字符串可变位置的测试名称 @shawnlindstrom 在 https://github.com/laravel/framework/pull/48480 中
- [10.x] 创建流畅方法 convertCase @rmunate 在 https://github.com/laravel/framework/pull/48492 中
- [10.x] 修复
CanBeOneOfMany
给出错误结果的问题 @Guilhem-DELAITRE 在 https://github.com/laravel/framework/pull/47427 中 - [10.x] 为不支持的列类型禁用自动递增 @ikari7789 在 https://github.com/laravel/framework/pull/48501 中
- [10.x] 将 bcrypt 轮数增加到 12 @valorin 在 https://github.com/laravel/framework/pull/48494 中
- [10.x] 确保数组驱动程序在过期时间过期值 @timacdonald 在 https://github.com/laravel/framework/pull/48497 中
- [10.x] 修复错别字 @szepeviktor 在 https://github.com/laravel/framework/pull/48513 中
- [10.x] 改进
Arr::first
和Arr::last
的测试 @tamiroh 在 https://github.com/laravel/framework/pull/48511 中 - [10.x] 为 MorphToMany 联接模型设置形态类型 @gazben 在 https://github.com/laravel/framework/pull/48432 中
- [10.x] 从在其他
*OrCreate
方法中使用createOrFirst
回退 @tonysm 在 https://github.com/laravel/framework/pull/48531 中 - [10.x] 修复测试中的错别字 @szepeviktor 在 https://github.com/laravel/framework/pull/48534 中
- [10.x] 为 HasManyThrough 关系添加
updateOrCreate
回归测试 @tonysm 在 https://github.com/laravel/framework/pull/48533 中 - [10.x] 将异常速率限制转换为秒 @timacdonald 在 https://github.com/laravel/framework/pull/48543 中
- [10.x] 为
HasManyThrough
关系添加firstOrCreate
和createOrFirst
方法 @tonysm 在 https://github.com/laravel/framework/pull/48541 中 - [10.x] 在缓存视图时处理自定义扩展 @timacdonald 在 https://github.com/laravel/framework/pull/48524 中
- [10.x] 设置提示交互模式 @jessarcher 在 https://github.com/laravel/framework/pull/48468 中