原文:A look at what is coming to Laravel 9
前言
Laravel 9 將成為 Laravel 的下一個 LTS 版本,並將在 2022 年初的某個時候釋出。在這篇文章中,我們想概述迄今為止宣佈的所有新功能和更改。
Laravel 9 釋出日期變更
Laravel 9 原定於今年 9 月左右釋出,但 Laravel 團隊決定將此版本推遲到 2022 年 1 月:
Laravel 使用各種社群驅動的包以及九個 Symfony 元件來實現框架內的許多功能。Symfony 6.0將於11月釋出。因此,我們選擇將 Laravel 9.0 的釋出推遲到 2022 年 1 月。
通過推遲釋出,我們可以將我們的底層 Symfony 元件升級到 Symfony 6.0,而不必被迫等到 2022 年 9 月才能執行此升級。 另外,這將使我們更好地應對未來的釋出,因為我們的年度釋出總是在Symfony釋出後兩個月釋出。
這也將推動未來的主要版本,以下是未來的時間表:
- Laravel 9: 2022 年 1 月
- Laravel 10: 2023 年 1 月
- Laravel 11: 2024 年 1 月
PHP 8 是 Laravel 9 中的最低版本
由於 Laravel 9 將需要 Symfony 6.0 並且它的最低版本要求是 PHP 8,這意味著 Laravel 9 將具有相同的限制。
匿名存根遷移
今年早些時候,Laravel 8.37 推出了一個名為匿名遷移的新功能,可以防止遷移類名衝突。
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* 執行遷移。
*
* @return void
*/
public function up()
{
Schema::table('people', function (Blueprint $table) {
$table->string('first_name')->nullable();
});
}
};
當 Laravel 9 推出時,這將是你執行 php artisan make:migration
時的預設配置
新的查詢構造器介面
感謝 Chris Morrell,Laravel 9 將擁有一個新的查詢構造器介面,您可以檢視此 合併的 PR 瞭解所有詳細資訊。
對於在IDE中依賴型別提示進行靜態分析、重構或程式碼完成的開發人員來說,
Query\Builder
,Eloquent\Builder
和Eloquent\Relation
之間缺乏共享介面或繼承可能會非常棘手:
return Model::query()
->whereNotExists(function($query) {
// $query 是一個 Query\Builder
})
->whereHas('relation', function($query) {
// $query 是一個 Eloquent\Builder
})
->with('relation', function($query) {
// $query 是一個 Eloquent\Relation
});
這個特性增加了一個新的 Illuminate\Contracts\Database\QueryBuilder
介面和一個 Illuminate\Database\Eloquent\Concerns\DecoratesQueryBuilder
特徵,它實現了介面,代替了現有的 __call
實現。
PHP 字串函式
由於 PHP 8 將是最低版本,Tom Schlick 提交了一個 PR 以便在 \Illuminate\Support\Str
類中內部使用 str_contains()
,str_starts_with()
和 str_ends_with()
函式。
從 SwiftMailer 到 Symfony Mailer
Symfony 棄用了 SwiftMailer 並且 Laravel 9 將更改為使用 Symfony Mailer 進行所有的郵箱傳輸,這確實開啟了一些突破性的變化,你可以 檢視 PR 瞭解所有細節。一旦正式釋出,Laravel 9 升級指南將包含相關說明。
更多…
Laravel 9 還需要幾個月的時間,並且更多的新功能和公告將陸續推出。當這些訊息公佈時,我們會更新這篇文章。
本作品採用《CC 協議》,轉載必須註明作者和本文連結