Laravel 10.10版本发布

2023-06-01 00:00:00 laravel 版本 发布

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

相关文章