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/compa...)
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架構師教程目錄大全,只要你看完保證薪資上升一個臺階(持續更新)?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61846.html
標籤:PHP
上一篇:首次網站備案心得
