Laravel 7.5 发布

Laravel

Laravel团队昨天发布了v7.5.0,其中包含了框架的一些更新的最新功能、修复和优化:

新的 Http 客户端断言

Christoph Rumpel 为 Http 客户端提供了两个新的测试方法:

Http::assertNotSent(function ($request) {
    return $request->hasHeader('X-First', 'foo') &&
           $request->url() == 'http://test.com/users' &&
           $request['name'] == 'Taylor' &&
           $request['role'] == 'Developer';
});

Http::assertNothingSent();

assertNotSent() 应该返回一个 boolean 值条件,并带有你需要匹配请求的约束条件。

这些方法补充了现有的 assertSent() 方法,在代码应导致不发送特定请求或不发送请求的情况下提供相反情况的检查。

重命名字段添加枚举支持

根据此功能的 PR “在迁移中,无法在带有枚举列的表中通过 renameColumn() 或 change() 方法重命名或修改列类型。”

如果我正确理解 PR 的话,你可以在枚举列上面调用 change() 方法

更新: PR 作者澄清了 PR 提供的功能:

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->increments('age');
    $table->enum('color', ['red', 'blue']);
});

// PR 提交前不支持
Schema::table('users', function (Blueprint $table) {
    $table->integer('age')->change();
});

// PR 提交前不支持
Schema::table('users', function (Blueprint $table) {
    $table->rename('name', 'username');
});

提醒一下,文档目前提供以下可修改字段类型的说明:

只有以下字段类型支持调用 “changed”: bigInteger, binary,boolean, date, dateTime, dateTimeTz, decimal, integer, json, longText, mediumText, smallInteger, string, text, time, unsignedBigInteger, unsignedInteger 和 unsignedSmallInteger。

更多的转换更新

Brent RooseCastable::castUsing 实现中提供了直接实例化:

class EloquentDataTransferObject extends DataTransferObject implements Castable
{
    public static function castUsing()
    {
        return new DataTransferObjectCaster(static::class);
    }
}

在 PR #32225 中了解更多与此相关的功能。 Laravel 7.4 版本引入了 Castable 接口,查看最新版本获取更多详细信息。 Eloquent 修改器 文档是另外一个了解自定义转换的好地方。

发布说明

你可以在下面的 GitHub 链接中看到新功能和更新列表以及 7.4.0 和 7.5.0 之间的区别。 完整版的 Laravel 7.x 发行说明已经在最新版本 v7 更新日志 中:

v7.5.0

新增

  • Illuminate\Http\Client\Factory 类新增 assertNotSent() 和 assertNothingSent() 方法  (#32197)
  • 增加对 renameColumn() 的枚举支持 (#32205)
  • 支持返回 caster 实例 (#32225)

修复

  • 避免超长URL破坏邮件布局 (#32189)
  • 修复驼峰转换关联名称 (#32217)
  • 修复 Blade 组件中合并 boolean 和 null 属性的问题 (#32245)
  • 修复 Console 预期的断言顺序 (#32258)
  • 修复 route 自定义绑定键帮助方法 (#32264)
  • 修复 UriValidator 中的双斜线匹配 (修复缓存路由和不缓存路由不一致) (#32260)
  • 修复邮件发送 header 设置 (#32272)

优化

  • 优化 Container::resolve() 方法 (#32194)
  • 优化 data_get() 方法性能 (#32192)
  • 优化 Str::startsWith() (#32243)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/laravel-7-5-rel...

译文地址:https://learnku.com/laravel/t/43206

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8

根据release的情况来看现在其实已经 v7.6.1

4年前 评论
sphard 4年前
michealzh (作者) 4年前

发布这么多版本做什么,有哪些重大更新吗?

4年前 评论

laravel是真的强 :+1:

4年前 评论

file 这版本更新的好快呀!

4年前 评论

laravel的更新频率 应该所有当中最频繁的了 :joy:

4年前 评论

新项目,纠结用5.5LTS还是最新的7版本,最后决定还是用最新版本7.6.2。要不然老是有心魔惦记着。开始我的踩坑之路了……

4年前 评论

v7.8.1了 马上就要laravel8了

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!