宁泽林_NiZerin - 互联网技术博客

  • PHP
  • Go
  • Java
  • Rust
  • Python
  • 交流群
  • 关于我
  • 留言版
  1. 首页
  2. Laravel
  3. 正文

Laravel 7.4 发布

2020年4月7日 3797点热度 0人点赞 11条评论

Laravel
Laravel 团队昨天发布了 v7.4.0 版本,其中包含相当多的新特性,例如自定义的模型转换器接口、 When 高阶集合代理,以及从查询构建器中清除现有 order 的功能。

高阶的 When 集合代理

Loris Leiva 贡献了使用高阶代理的能力,它的方法是 Collection::When()

// PR 中的相关代码
$collection->when($condition, function ($collection) use ($item) {
    $collection->push($item);
});
// 现在重构为
$collection->when($condition)->push($item);

此 PR 使您能够链接其他高阶代理方法:

// 以前
$collection->when($condition, function ($collection) {
    $collection->map->parseIntoSomething();
});
// 现在重构为
$collection->when($condition)->map->parseIntoSomething();

对于Artisan命令行增加expectsChoice()进行选择

Adrian Nürnberger提供了一个控制台测试方法,用于在命令行中询问你的选择。
就像下面这样:

$name = $this->choice('What is your name?', ['Taylor', 'Dayle'], $defaultIndex);

之前你只能断言此问题的回复,不能测试选择:

$this->artisan('question')
  ->expectsQuestion('What is your name?', 'Taylor')
  ->assertExitCode(0);

在Laravel7.4,你可以给出选项,像下面这样做:

$this->artisan('question')
  ->expectsChoice('What is your name?', 'Taylor', ['Taylor', 'Dayle'])
  ->assertExitCode(0);

你还可以在第四个参数传入一个boolean类型的值,用来保证选择顺序

$this->artisan('question')
  ->expectsChoice('What is your name?', 'Taylor', ['Taylor', 'Dayle'], true)
  ->assertExitCode(0);

为Blade的@props标签添加默认值

@props拥有了自定义默认值的能力

<!-- 以前的版本: -->
@props(['type', 'message'])
@php
    $type = $type ?? 'info'
@endphp
<!-- Laravel >=7.4 -->
@props(['type' => 'info', 'message'])

Castable 接口

Brent Roose 贡献了一个 Castable 接口,允许 Castable 类型指定其基础类:

// 以前
class ModelX extends Model
{
    protected $casts = [
        'data' => CastToDTO::class . ':' . MyDTO::class,
    ];
}
// 现在
class ModelY extends Model
{
    protected $casts = [
        'data' => MyDTO::class,
    ];
}
// 基础类
use Illuminate\Contracts\Database\Eloquent\Castable;
class MyDTO implements Castable
{
    public static function castUsing()
    {
        return CastToDTO::class . ':' . static::class;
    }
}

从查询构建器中删除 order

Jonathan Reinink 为查询构建器贡献了一个 reorder() 方法,用于重置其 orderBy():

$query = DB::table('users')->orderBy('name');
$unorderedUsers = $query->reorder()->get();

重新排序允许您在雄辩的关系中定义默认顺序,并能够在需要时取消:

class Account extends Model
{
    public function users()
    {
        return $this->hasMany(User::class)->orderBy('name');
    }
}
// 删除名称 orderBy 和 order by email
$account->users()->reorder()->orderBy('email');
// 同样可以写成:
$account->users()->reorder('email');

发行说明

您可以在下面看到新功能和更新的完整列表以及在Github上看到[7.3.0和7.4.0]之间的区别(https://github.com/laravel/framework/compare/v7.3.0...v7.4.0)
Laravel 7.x的完整发行说明可在最新的[v7更新日志]中找到(https://github.com/laravel/framework/blob/7.x/CHANGELOG-7.x.md#v740-2020-03 -31):

v7.4.0

添加内容

  • 可自定义make:policy的存档位置 (#32040, 9d36a36)
  • 为集合添加 HigherOrderWhenProxy (#32148)
  • 添加了 Illuminate\Testing\PendingCommand::expectsChoice() (#32139)
  • 添加了对于blade中“props”标记的支持(#32177)
  • 添加了Castable接口 (#32129, 9cbf908, 651371a)
  • 增加了从查询生成器中删除订单的功能(#32186)

修复

  • 在 PendingMailFake::sendNow() 和 PendingMailFake::send() (#32093)中添加了缺少的返回值
  • 修复了自定义模型属性转换 (#32118)
  • 修复了路由组前缀 (#32135, 870efef)
  • 修复固定组件类视图引用 (#32132)

相关更改

  • 删除 SWIFT 邮件绑定程序 (#32165)
  • 当运行 stub:publish 命令时发布 console stub (#32096)
  • 当运行 make:rule 命令时发布 rule stub (#32097)
  • 将 midleware.stub 添加到运行 php artisan stub:publish 时发布的文件中 (#32099)
  • 将 factory.stub 添加到运行php artisan stub:publish 时发布的文件中 (#32100)
  • 将 eneder.stub 添加到运行php artisan stub:publish 时发布的文件中 (#32122)
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: laravel
最后更新:2020年4月7日

NiZerin

博主已经躺平了,后面很少会更新博客。

打赏 点赞
< 上一篇
下一篇 >

文章评论

  • Daes

    哈哈哈

    2020年6月1日
    回复
  • 。。。

    这个评论怎么过的审核啊

    2020年7月29日
    回复
  • 。。。

    这个评论怎么过的审核啊

    2020年7月29日
    回复
  • 。。。

    这个评论怎么过的审核啊

    2020年7月29日
    回复
  • 。。。

    这个评论怎么过的审核啊

    2020年7月29日
    回复
  • 。。。

    这个评论怎么过的审核啊

    2020年7月29日
    回复
  • 。。。

    这个评论怎么过的审核啊

    2020年7月29日
    回复
  • 。。。

    这个评论怎么过的审核啊

    2020年7月29日
    回复
  • 。。。

    有bug

    2020年7月29日
    回复
  • Lost My Soul

    没有

    2020年7月30日
    回复
  • 庞.统

    嗯嗯

    2021年1月29日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    回复 。。。 取消回复

    分类
    • Angular
    • CSS3
    • docker
    • Flutter
    • git
    • Go
    • H5
    • Java
    • JavaScript
    • Laravel
    • linux
    • Node.js
    • PHP
    • Python
    • React
    • redis
    • Vue.js
    • windows
    • WordPress
    • 交流
    • 小程序
    • 工具
    • 网站公告
    标签聚合
    flutter laravel go translations wordpress javascript vue php
    友情链接
    • PHP函数字典
    • 宝塔运维特惠
    • 科学上网
    • 阿里云特惠

    COPYRIGHT © 2021 nizer.in. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang