Laravel 开发团队本周发布了 6.12.0 版本,此次更新支持从扩展包加载模型工厂,通过 dump
函数测试 Session 数据,以及很多其他新特性。另外,这次更新还包含了很多第三方开发者贡献的、用于优化重复操作的语法糖,例如过滤请求输入字段中的非布尔值。
下面我们一起来看下其中比较重要的一些新特性:
1、重要特性
1)从扩展包加载模型工厂
在 Laravel 6.12 中,你可以在扩展包中直接使用已经存在的模型工厂,而不需要重新创建它们,方法是在服务提供者中引入对应的包含模型工厂的文件,然后就可以使用它们了:
代码语言:javascript复制// 在某个服务提供者中...
$this->loadFactoriesFrom('source/database/factories');
// 还可以一次引入多个包含模型工厂的文件
$this->loadFactoriesFrom([
'source_one/database/factories',
'source_two/database/factories',
]);
代码语言:javascript复制
2)在响应测试中打印 Session
TestResponse
类中新增了一个 dumpSession()
方法用来打印完整的Session 或者特定键值(Session 的指定键值):
$response->dumpSession();
$response->dumpSession('example');
$response->dumpSession(['example', 'example2']);
代码语言:javascript复制
3)Str::isUuid 辅助函数
新增了一个字符串辅助函数 isUuid()
通过验证 UUID 从 ValidatesAttributes
trait 中解析特定逻辑:
// Returns true
Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');
// Returns false
Str::isUuid('laravel');
代码语言:javascript复制
4)请求布尔方法
新增了一个 Request::boolean()
方法用于接受请求输入字段并通过 filter_var
方法来过滤,用来判断某个字段值是否是布尔值,下面是使用示例:
$request = Request::create('/', 'GET', [
'example1' => 'true',
'example2' => 'false',
'checked' => 1,
'checked2' => '1',
'unchecked' => 0,
'unchecked2' => '0',
'name' => 'Jane Doe'
]);
$request->boolean('example1'); // true
$request->boolean('example2'); // false
$request->boolean('checked'); // true
$request->boolean('checked2'); // true
$request->boolean('unchecked'); // false
$request->boolean('unchecked2'); // false
$request->boolean('name'); // false
代码语言:javascript复制
5)工厂构建器 createMany()
新增了一个工厂方法 createMany()
用于通过自定义数据创建多条记录:
// Laravel 6.12 版本之前需要这么做
factory(User::class)->create([
'name' => 'Taylor',
]);
factory(User::class)->create([
'name' => 'John',
]);
// 现在可以这么做
factory(User::class)->createMany([
['name' => 'Taylor'],
['name' => 'John'],
]);
你可以在 Github 上查看完整的新特性列表和更新记录:https://github.com/laravel/framework/blob/e18a984a35b6adcd701966b3bc3da022d7533992/CHANGELOG-6.x.md#v6120-2020-01-21,以及 6.11.0 和 6.12.0 的版本差异:https://github.com/laravel/framework/compare/v6.11.0...v6.12.0。
2、更新日志
1)新增特性
- 新增
ServiceProvider::loadFactoriesFrom()
方法 - 新增
TestResponse::dumpSession()
方法 - 新增
Str::isUuid()
方法 - 恢复对 PHPUnit 7 的支持
- 新增
Request::boolean()
方法 - 新增
DatabaseEloquentFactoryBuilder::createMany()
方法 - 为 PhpRedis 新增缺失选项
2)问题修复
- 修复
CacheRedisLock::acquire()
方法存在的问题 - 修复数据库 url 连接解析时没有指定数据库的问题
- 防止表名前缀不明确的列
3)代码优化
- 修复下载大文件时内存使用问题
4)代码调整
- 使用
Event::fake()
时在解析缓存仓库时替换事件调度器
声明:本文翻译整理自 Laravel News。