Laravel 10.10版本发布
Laravel的最新版本,10.10版本,带来了许多令人兴奋的新功能和增强功能。随着每个版本的发布, Laravel继续推动Web开发的界限. 在这个版本中, 值得注意的贡献包括诸如睡眠类, 散列模型的投射, 以及将命令标记为 "可隔离 "的能力.
>本周,@timacdonald87发布了 "睡眠 "类。
Sleep是一个围绕PHP原生睡眠函数的灵活的API。
另外(这是最重要的部分),你可以 "伪造 "睡眠,并对你的代码的睡眠情况做出断言。
这可以使你的测试保持超快的速度。https://t.co/mJMrs3IAQx pic.twitter.com/ewgfLSeKIz
- Taylor Otwell(@taylorotwell) 5月9日, 2023
让我们来看看本周发布的几个新功能亮点:
封装本地sleep()和usleep()的睡眠类
Tim MacDonald贡献了一个Sleep类,它可以包装本地的sleep()和usleep()函数。
使用这个类意味着依赖sleep()的代码不需要睡眠,这就提高了测试速度,
而且使用所提供的测试助手仍然可以保持信心:
protected function setUp(): void
{
parent::setUp();
Sleep::fake();
}
// Usage
Sleep::assertSleptTimes(3);
下面是代码API的样子:
Sleep::for(3)->minutes();
Sleep::for(3)->seconds();
Sleep::for(30000)->milliseconds();
Sleep::for(30000)->microseconds();
你也可以用上面的方法来编排更复杂的东西:
Sleep::for(3)->minutes()
->and(5)->seconds()
->and(9)->milliseconds();
我喜欢看到Laravel在每个版本中都不断地推出令人惊奇的功能!
散列式铸造
Günther Debrauwer 贡献了一个哈希值(hashhed cast), 可以确保一个属性的值是哈希的:
>加密的铸模已经存在, 但对一个值进行散列的铸模还不存在.
在很多应用中(甚至Laravel的默认应用), 用户模型有一个密码.
我认为有一个哈希值,确保密码(或其他属性的值)在被保存到数据库之前总是被哈希的。
下面是一个例子,它看起来像什么:
public $casts = [
'password' => 'hashed',
];
将命令标记为 "可隔离的"
@bytestream贡献了使用$isolated属性将一个命令配置为 "可隔离 "的能力:
// 相当于手动传递`--隔离的`。
protected $isolated = true;
// 相当于手动传递 `--隔离=12`。
protected $isolatedCommandExitCode = 12;
发布说明
你可以在GitHub上看到以下完整的新功能和更新列表以及10.9.0和10.10.0之间的差异。
下面的发行说明直接来自更新日志:
https://github.com/laravel/framework/compare/v10.9.0...v10.10.0
https://github.com/laravel/framework/blob/d925372e25d1acf50550433562119915ff6c5d02/CHANGELOG.md#v10100-2023-05-09
v10.10.0
已添加
为Illuminate/Console/Command添加了$isolated和isolatedExitCode属性 (#46925)
增加了恢复/设置全局范围的功能(#46922)。
已添加 Illuminate/Collections/Arr::sortRecursiveDesc() (#46945)
添加了照明/支持/睡眠 (#46904, #46963)
已添加 Illuminate/Database/Eloquent/Concerns/HasAttributes::castAttributeAsHashedString() (#46947)
为邮件配置添加了url支持(#46964)
修复了
固定替换missing_unless (89ac58a)
在e()中优雅地处理无效的代码点(#46914)
HasCasts返回false而不是true (#46992)
已更改
在UploadedFile上使用方法来验证图片尺寸(#46912)
暴露Js::json()助手 (#46935)
在中间件的优先级上尊重父母 (#46972)
当redis抛出连接丢失错误时,做重新连接(#46989)。
当工作超时时,抛出timeoutException而不是maxAttemptsExceededException(#46968)
转:
https://laravel-news.com/laravel-10-10-0
相关文章