Laravel 6.8.0 版本发布


Laravel 开发团队本周发布了 v6.8.0 版本,主要在测试 HTTP 响应时新增了一些有用的更新,以及其他代码优化和问题修复。

下面我们来大致看一下新增的特性和方法。

新增特性

响应类实现 ArrayAccess 接口

Taylor Otwell 让 JsonResponseTestResponse 类实现了 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);
  • JsonResponseTestResponse 中实现 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


Vote Vote Cancel Collect Collect Cancel

<< 上一篇: Laravel 6.7.0 版本发布

>> 下一篇: Laravel 对于修改控制器不生效