Laravel 10.25 发布
本周,Laravel团队发布了v10.25版本,其中包括异常节流、Str::take()
方法等更新。这周Laravel收到了很多社区的修复、更新和纠错,这总是非常让人感激!
异常限流
Tim MacDonald 贡献了异常节流的能力,通过采样/限制异常报告来限制异常。您的异常Handler
类可以定义一个throttle()
方法,这个方法让您可以根据异常类型进行速率限制,从而实现更灵活的控制。
// App\Exceptions\Handler
use 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()
的语法糖,当你想从字符串的第一个字符开始截取时,它会更方便使用。
// Before
str('abcdef')->substr(0, 2) // 'ab'
Str::substr('abcdef', 0, 2); // 'ab'
// After
str('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,但对于某些服务器来说,这可能过高。
请查看Pull Request #48494以获取有关此更改的进一步详细信息。
发布说明
您可以在下面看到完整的新功能和更新列表,以及GitHub上10.24.0与10.25.0之间的差异。以下发布说明直接来自changelog:
v10.25.0
- [10.x] 通过@wimski在github.com/laravel/framework/pull/...中修复了EnumeratesValues::ensure()的文档块中@return标签中的键类型。
- [10.x] 添加了
str()->take($limit)
和Str::take($string, $limit)
,由@moshe-autoleadstar在github.com/laravel/framework/pull/...中完成。 - [10.x] 通过@timacdonald在github.com/laravel/framework/pull/...中限制异常。
- [10.x] 通过@CalebDW在github.com/laravel/framework/pull/...中修复了混合使用内联/块@php指令时blade编译失败的问题。
- [10.x] 通过@shawnlindstrom在github.com/laravel/framework/pull/...中修复了字符串位置的测试名称。
- [10.x] 通过@rmunate在github.com/laravel/framework/pull/...中创建了一个名为convertCase的流畅方法。
- [10.x] 通过@Guilhem-DELAITRE在github.com/laravel/framework/pull/...中修复了
CanBeOneOfMany
给出错误结果的问题。 - [10.x] 通过@ikari7789在github.com/laravel/framework/pull/...中禁用了不支持的列类型的自动增量。
- [10.x] 通过@valorin在github.com/laravel/framework/pull/...中将bcrypt轮数增加到12。
- [10.x] 通过@timacdonald在github.com/laravel/framework/pull/...中确保数组驱动程序在到期时间过期。
- [10.x] 通过@szepeviktor在github.com/laravel/framework/pull/...中修复了一些拼写错误。
- [10.x] 通过@tamiroh在github.com/laravel/framework/pull/...中改进了
Arr::first
和Arr::last
的测试。 - [10.x] 通过@gazben在github.com/laravel/framework/pull/...中为MorphToMany的枢轴模型设置了morph类型。
- [10.x] 通过@tonysm在github.com/laravel/framework/pull/...中从其他
*OrCreate
方法中恢复使用createOrFirst
。 - [10.x] 通过@szepeviktor在github.com/laravel/framework/pull/...中修复了测试中的拼写错误。
- [10.x] 通过@tonysm在github.com/laravel/framework/pull/...中添加了HasManyThrough关系上的
updateOrCreate
方法的回归测试。 - [10.x] 通过@timacdonald在github.com/laravel/framework/pull/...中将异常限制转换为秒。
- [10.x] 通过@tonysm在github.com/laravel/framework/pull/...中添加了
HasManyThrough
关系的firstOrCreate
和createOrFirst
方法。 - [10.x] 通过@timacdonald在github.com/laravel/framework/pull/...中处理缓存视图时的自定义扩展。
- [10.x] 通过@jessarcher在github.com/laravel/framework/pull/...中设置了提示交互模式。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: