Laravel 6.8.0 版本发布
Laravel 开发团队本周发布了 v6.8.0
版本,主要在测试 HTTP 响应时新增了一些有用的更新,以及其他代码优化和问题修复。
下面我们来大致看一下新增的特性和方法。
新增特性
响应类实现 ArrayAccess 接口
Taylor Otwell 让 JsonResponse
和 TestResponse
类实现了 ArrayAccess
接口,这样做的好处是当你想要在测试或者 JsonResponse
实例中获取 JSON 数据时,可以直接通过数组访问的形式获取,比之前的方式更加方便。
我们来看一个具体的例子:
// 测试路由
Route::get('/', function () {
return ['servers' => ['foo', 'bar']];
});
// 访问测试路由获取响应
$response = $this->get('/');
// 在 6.8.0 版本之前获取 servers 数据需要这么做
$this->assertCount(2, $response->original['servers']);
// 现在可以直接通过数组访问的形式获取
$this->assertCount(2, $response['servers']);
使用自定义的 Markdown 邮件主题
扩展包现在可以使用自定义的 Markdown 邮件主题:
mailcoach::mails.layout.mailcoach
assertViewHas() 方法支持嵌套数组
TestResponse::assertViewHas()
断言支持前端数组检查:
$this->get('/page')
->assertViewHas('page', [
'component' => 'PageComponent',
'url' => '/page',
'version' => null,
'props' => [
'user_name' => 'John Doe'
]
]);
设置独立的模型属性
现在你可以使用 setRawAttribute()
方法为模型设置独立的属性值:
// 设置属性值
$model->setRawAttribute('key', $value);
// 设置属性值并同步到 original 中
$model->setRawAttribute('key', $value, true);
make:controller
命令支持强制选项
和模型类似,你可以强制通过 make:controller
命令重新创建控制器,这在你忘记使用 --resource
选项创建资源控制器想要重新创建时很有用:
php artisan make:controller --force --resource ExampleController
通过 make:model
创建填充器
使用 make:model
命令创建模型时,现在可以通过 --seed
选项同时创建对应的填充器:
# creates PostSeeder class
artisan make:model --seed Post
更新日志
新增功能
- 允许扩展包使用自定义的 Markdown 邮件主题(#30814, 2206d52);
- 添加更多的励志语录(通过
php artisan inspire
查看,4a7d566, 9693ced); - 在
TestResponse::assertViewHas()
中支持嵌套数组(#30837); - 新增
Model::setRawAttribute()
方法(#30853); - 在
make:controller
命令中新增--force
选项(#30856); - 允许传递数组到
Resource::collection()
方法(#30800); - 在
JsonResponse
和TestResponse
中实现ArrayAccess
接口(#30817); - 在
make::model
命令中新增--seed
选项(#30828, 2cd9417)。
问题修复
- 修复使用
change()
方法时创建两个索引而不是一个的问题(#30843); - 避免在
Mailable
中出现重复的附件(3c8ccc2); - 在使用 PHP 7.4 版本的 Lumen 中修复
ServiceProvider
出现的问题(#30819); - 修复数据库验证规则中非 Eloquent 模型的验证问题(#30840)。
代码调整
- 修改
rescue()
辅助函数内部实现代码(#30838); - 在
Container.php
抛出的EntryNotFoundException
中添加上一个异常(#30862); - 修改
DatabaseNotification::$keyType
匹配 uuid(#30823)。
以上,就是本次次要版本迭代涉及到所有新特性和重要更新,你可以在 Github 上查看完整的更新日志以及相较于 v6.7.0 版本的代码调整。
声明:以上内容翻译整理自 Laravel News。
1 Comment
版本号刷的要人命