zoukankan      html  css  js  c++  java
  • Laravel 7.4 发布

    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 IlluminateContractsDatabaseEloquentCastable;
    
    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] 之间的区别(...)

     

    v7.4.0

    添加内容

     

    • 可自定义 make:policy 的存档位置 (#32040, 9d36a36)
    • 为集合添加 HigherOrderWhenProxy (#32148)
    • 添加了 IlluminateTestingPendingCommand::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)

     

    更多学习内容请访问:

    八重樱:腾讯T3-T4标准精品PHP架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)

  • 相关阅读:
    jquery 获取当前元素的索引值
    JQuery中根据属性或属性值获得元素(6种情况获取方法)
    jquery如何获取某一个兄弟节点
    JAVA学习<六>
    JAVA学习<四>
    JAVA学习<三>
    iOS定位到崩溃代码行数
    Swift3.0基础语法学习<五>
    Swift3.0基础语法学习<四>
    Swift3.0基础语法学习<三>
  • 原文地址:https://www.cnblogs.com/a609251438/p/12654354.html
Copyright © 2011-2022 走看看