Laravel 7.4 發佈

Laravel 團隊昨天發佈了 v7.4.0 版本,其中包含至關多的新特性,例如自定義的模型轉換器接口、 When 高階集合代理,以及從查詢構建器中清除現有 order 的功能。php

高階的 When 集合代理

Loris Leiva 貢獻了使用高階代理的能力,它的方法是 Collection::When()node

// PR 中的相關代碼
$collection->when($condition, function ($collection) use ($item) {
    $collection->push($item);
});

// 如今重構爲
$collection->when($condition)->push($item);

  

此 PR 使您可以連接其餘高階代理方法:laravel

// 之前
$collection->when($condition, function ($collection) {
    $collection->map->parseIntoSomething();
});

// 如今重構爲
$collection->when($condition)->map->parseIntoSomething();

  

對於 Artisan 命令行增長 expectsChoice () 進行選擇

Adrian Nürnberger 提供了一個控制檯測試方法,用於在命令行中詢問你的選擇。git

就像下面這樣:github

$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 擁有了自定義默認值的能力this

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

<!-- Laravel >=7.4 -->
@props(['type' => 'info', 'message'])

  

Castable 接口

Brent Roose 貢獻了一個 Castable 接口,容許 Castable 類型指定其基礎類:spa

// 之前
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] 之間的區別(...)

 

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)

 

 

更多學習內容請訪問:

八重櫻:騰訊T3-T4標準精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個臺階(持續更新)

相關文章
相關標籤/搜索