Laravel 9 LTS 將于 2022 一月份發(fā)布

Laravel v9 將成為 Laravel 的下一個 LTS 版本,并將在 2022 年初發(fā)布。在本篇文章中,我們想概述迄今為止宣布的所有新功能和更改。
Laravel 9 發(fā)布日期變更
Laravel v9 原定于今年 9 月左右發(fā)布,但 Laravel 團隊決定將此版本推遲到 2022 年 1 月:
Laravel 使用了各種社區(qū)推動的擴展包以及 9 個 Symfony 組件來實現(xiàn)框架內(nèi)的許多功能。Symfony 6.0 將于今年 11 月發(fā)布。出于這個原因,所以我們選擇將 Laravel 9.0 的發(fā)布推遲到 2022 年 1 月。
通過推遲發(fā)布,我們可以將的底層 Symfony 組件升級到 Symfony 6.0,而不必等到 2022 年 9 月才能執(zhí)行此升級。
此外,由于我們的年度發(fā)布總是在 Symfony 發(fā)布兩個月后進行,因此這將為未來的發(fā)布做好準備。
這也將推動未來主要版本的發(fā)布,接下來的計劃是:
Laravel 9:2022年1月
Laravel 10:2023年1月
Laravel 11:2024年1月
Laravel 9 中的最低版本是 PHP 8
因為 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 {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('people', function (Blueprint $table) {
$table->string('first_name')->nullable();
});
}
};當(dāng) Laravel 9 啟動時,上面代碼將是運行php artisan make:migration時的默認值
新的查詢構(gòu)建器接口
多虧了 Chris Morrell,Laravel 9 將具有一個新的查詢構(gòu)建器接口,您可以在 合并的PR 中查看所有細節(jié)。
對于在 IDE 中依賴類型提示進行靜態(tài)分析、重構(gòu)或代碼完成的開發(fā)人員來說,
Query\Builder、Eloquent\Builder和Eloquent\Relation之間缺乏共享接口或繼承可能相當(dāng)棘手:
return Model::query()
->whereNotExists(function($query) {
// $query is a Query\Builder
})
->whereHas('relation', function($query) {
// $query is an Eloquent\Builder
})
->with('relation', function($query) {
// $query is an Eloquent\Relation
});此功能添加了一個新的 Illuminate\Contracts\Database\QueryBuilder 接口和一個 Illuminate\Database\Eloquent\Concerns\DecoratesQueryBuilder 特性,該特性實現(xiàn)了該接口來代替現(xiàn)有的 __call 實現(xiàn)。
PHP 8 字符串函數(shù)
由于 PHP 8 將是最低版本,Tom Schlick 提交了 PR 以轉(zhuǎn)向使用 str_contains()、str_starts_with() 和 str_ends_with () 在 \Illuminate\Support\Str 類內(nèi)部運行。
從 SwiftMailer 到 Symfony Mailer
Symfony 棄用了 SwiftMailer,而 Laravel 9 進行了更改,以將 Symfony Mailer 用于所有郵件傳輸。這確實帶來了一些重大更改,您可以 查看 PR 了解所有詳細信息。Laravel 9 升級指南將在正式發(fā)布后包含說明。
還有…
Laravel 9 還有幾個月的時間,更多的新功能和公告將會發(fā)布。我們將在發(fā)布時更新這篇文章。
