Laravel 9新功能:深入探討即將釋出的主要版本

Laravel 9新功能:深入探討即將釋出的主要版本

Laravel多年來一直是最流行的PHP框架之一。它優雅、可擴充套件,已成為開發人員和使用PHP的公司的事實上的框架之一。現在,Laravel 9即將推出大量新功能。

過去,新版本每六個月釋出一次,導致對Laravel的新發布過程提出了相當多的問題、嚴厲的評論和混亂。隨著Laravel 9的釋出,該框架已進入12個月的主要釋出週期,並將於2022年1月釋出。

本文探討了Laravel 9的主要功能。最重要的是,我們還將詳細介紹如何升級到Laravel 9並開始開發Web應用程式。

  1. 什麼是Laravel?
  2. Laravel的主要特性
  3. 對Laravel 9有何期待
  4. Laravel 9的新特性
  5. 如何安裝Laravel 9

什麼是 Laravel?

Laravel是一個開源的PHP Web應用程式框架,以其優雅的語法而聞名。它是一個MVC框架,用於使用PHP程式語言構建簡單到複雜的Web應用程式,它嚴格遵循MVC(模型-檢視-控制器)架構模式。

如果您還沒有使用過Laravel,您可以閱讀Laravel與django的對比文章以深入瞭解,並檢視我們基於Laravel開發實時評論系統的教程以開始使用。

Laravel的主要特性

如果你是這個框架的新手,我們精選了一些最好的Laravel特性來讓你更好地理解。

Laravel功能

Laravel功能(圖片來源:Moon Technolabs

Eloquent ORM

Laravel的物件關係對映器 (ORM) 稱為Eloquent,它是Laravel的最佳功能之一,因為它允許與所選的資料模型和資料庫進行無縫互動。

使用Eloquent,Laravel抽象了涉及互動和編寫複雜SQL查詢以訪問資料庫資料的所有障礙。

Artisan CLI

Artisan CLI或命令列是Laravel的另一個重要方面。有了它,您可以從命令列建立或修改Laravel的任何部分,而無需瀏覽資料夾和檔案。

藉助Artisan,您甚至可以使用Laravel Tinker從命令列直接與資料庫互動——所有這些都無需安裝資料庫客戶端。

MVC架構

Laravel的MVC架構特性使該語言具有相關性和適應性,因為它遵循流行的Web開發模式,並不斷進行重大改進。

Laravel將迫使您學習和理解MVC架構模式,該模式在幾乎所有框架中都很流行和使用,例如來自JavaScript的AdonisJS和來自C#的ASP.NET MVC。

自動分頁

如果您曾經為應用程式中的分頁而苦惱,您就會明白通過內建框架整理分頁的價值。

Laravel通過構建開箱即用的自動分頁來解決分頁麻煩。此功能是其最受認可的功能之一,它消除了自己解決分頁之謎所涉及的工作。

安全

仔細檢查您正在考慮使用的任何Web應用程式的安全措施至關重要,因為缺乏盡職調查可能會導致資金損失,甚至您的網站或產品被劫持。

由於Laravel遵守OWASP安全原則,因此提供了許多安全措施。從跨站點請求偽造 (CSRF) 到SQL隱碼攻擊,Laravel都有一個內建的解決方案。

對Laravel 9有何期待

Laravel 9計劃於2021年9月釋出,已被推遲到2022年1月,使其成為第一個在12個月釋出週期後推出的長期支援 (LTS) 版本。造成這種延遲的原因有很多,包括但不限於以下幾點:

  1. Laravel 使用各種社羣驅動的專案和大約九個Symfony庫。然而,Symfony計劃在2021年11月之前釋出6.0版本。延遲將使Laravel團隊能夠將這個新版本的Symfony作為Laravel 9的一部分。
  2. 延遲將使團隊有時間監控Laravel如何與新版本的Symfony互動兩個月。它還為他們提供了糾正任何重大更改或錯誤的空間。
  3. 最後,推遲Laravel 9的釋出可以更好地為Laravel團隊定位,以應對未來每年的釋出。在Symfony釋出後,這將為團隊提供兩個月的額外提升時間。

由於這些原因,您可以看到其釋出的延遲值得等待。

Laravel 9的新特性

現在,讓我們探索在即將到來的 Laravel 主要版本中你應該期待的特性和改進列表。

最低PHP要求

首先也是最重要的是,Laravel 9需要最新的PHP 8和PHPUnit 8進行測試。這是因為Laravel 9將使用最新的Symfony v6.0,它也需要PHP 8。

匿名存根遷移

當您執行流行的遷移命令時,Laravel將匿名存根遷移設定為預設行為:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
php artisan make:migration
php artisan make:migration
php artisan make:migration

匿名存根遷移功能最初是在Laravel 8.37中釋出的,用於解決Github的這個問題。問題是嘗試從頭開始重新建立資料庫時,具有相同類名的多個遷移可能會導致問題。新的存根遷移功能消除了遷移類名稱衝突。

從Laravel 8.37開始,該框架現在支援匿名類遷移檔案,而在Laravel 9中,它將成為預設行為。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
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();
});
}
};
<?php 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(); }); } };
<?php

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();
        });
    }
};

新的查詢生成器介面

在新的Laravel 9中,型別提示對於IDE中的重構、靜態分析和程式碼完成非常可靠。這是由於Query\Builder、Eloquent\Builder 和 Eloquent\Relation之間缺乏共享介面或繼承儘管如此,使用Laravel 9,開發人員現在可以享受用於型別提示、重構和靜態分析的新查詢構建器介面。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
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
});
<?php 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 });
<?php

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 interface, 以及Illuminate\Database\Eloquent\Concerns\DecoratesQueryBuilder將實現介面代替__call魔法方法的特性。

PHP 8字串函式

由於Laravel 9針對PHP 8,Laravel合併了這個PR,建議使用最新的PHP 8字串函式。

這些功能包括使用的 str_contains()str_starts_with()以及str_ends_with()在內部\Illuminate\Support\Str類。

上面列出的Laravel 9的功能和改進是對即將發生的事情的先睹為快。它肯定會帶來許多錯誤修復、功能,當然還有許多重大更改。

如何安裝Laravel 9

如果您想開始使用Laravel 9進行開發和測試,您可以輕鬆地在本地機器上安裝和執行它。

Laravel 9支援PHP 8,因此如果您打算測試它,請務必檢查您的PHP版本或啟動全新安裝。

您可以通過Packagist發現有關該版本的更多詳細資訊。

要使用composer安裝Laravel 9,請執行以下命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
composer create-project --prefer-dist laravel/laravel laravel-9-dev dev-develop
composer create-project --prefer-dist laravel/laravel laravel-9-dev dev-develop
composer create-project --prefer-dist laravel/laravel laravel-9-dev dev-develop

上面的命令將laravel-9-dev使用最新的Laravel 9建立一個名為 的新Laravel專案,正如我們所知,它仍在開發中(因此dev-develop)。

第二種方法是使用Laravel全域性CLI建立一個新的Laravel專案,並選擇從dev分支建立你的新專案。

輸入以下命令建立一個新的Laravel 9專案:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
laravel new laravel-9-dev --dev
laravel new laravel-9-dev --dev
laravel new laravel-9-dev --dev

現在你已經安裝了Laravel 9,你可以進入新目錄(laravel-dev)並執行artisan命令來檢查版本:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cd laravel-9-dev
php artisan --version
cd laravel-9-dev php artisan --version
cd laravel-9-dev
php artisan --version

它應該向您展示Laravel 9的開發版本。瞧!

小結

Laravel是一個引人注目的PHP框架,在開發人員中越來越受到關注。它即將釋出的主要版本(Laravel 9)是12個月釋出週期之後的第一個版本,我們已經可以看到它將引入“多汁”的新功能。

這是新功能的完整列表嗎?可能不會,因為 Laravel 團隊可能會在釋出日期之前宣佈新功能。因此,請務必將此帖子加入書籤,因為我們將在未來的更新中介紹它們。

評論留言