《Laravel 11 正式發布!新功能介紹 – 軟體框架》

Telegram share !

一直以來Laravel框架總是一年兩次的框架版本更新,直到Laravel 9後開始有了些改變,改成是一年一次的年度更新,除非核心Symfony中間有做其他異動,團隊才會在Symfony發布後兩個月,進行Laravel臨時更新,所以之後大家就掌握一個原則,之後每年的第一個季度,Laravel就會有新的版本發表,本篇幫大家整理一下Laravel 11的相關新功能與原功能更新,希望你看完本篇分享,會讓你對於是否要使用Laravel 11有些基本想法喔。

Laravel 11 新功能與功能更新

更纖薄的應用程式架構

隨著 Laravel 11 的推出,重新定義 Laravel 應用程式的結構了。為您的專案提供更精簡、更有效率的起點。

全新的 bootstrap/app.php 文件

這次改造的核心是 bootstrap/app.php 文件,它已煥然一新,充當您的中央指揮站。在這裡,您可以調整應用程式路由、中間件、服務提供者、異常處理等等—這些都可以從一個地方完成。

簡化的service providers

您是否習慣與多個服務提供者周旋? Laravel 11 說:“不再了!”現在,只有一個 AppServiceProvider 。此變更將舊服務提供者的功能合併到 bootstrap/app.php 或 AppServiceProvider 中,使您的程式碼庫更加整潔。

停止支援PHP 8.1,最低支援PHP 8.2

PHP 8.2是Laravel 11中最低要求的PHP版本。如果您使用的是舊版的 PHP,現在是升級版本的好時機。

最低需要 SQLite 3.35.0+

如果您使用 SQLite 資料庫,那麼 Laravel 11 將需要 SQLite 3.35.0 或更高版本。

可選安裝的API和broadcast路由文件

並非每個應用程式都需要 API 和廣播功能。 Laravel 11 透過預設不包含 api.php 和channels.php 路由檔案。

#需要安裝時候只要使用Artisan就可以隨時安裝進去這個功能
php artisan install:api
php artisan install:broadcasting

移除預設的中間件類別

雜亂的中間件資料夾體驗已經結束,Laravel 11 已將這些中間件移至框架本身中,讓您享受更清晰的應用程式結構,同時又不失去從 bootstrap/app.php 自訂中間件行為的能力。

->withMiddleware(function (Middleware $middleware) {
    $middleware->redirectGuestsTo('/admin/login');
})

異常處理也整併至 bootstrap/app.php

異常處理也整併到了 bootstrap/app.php 檔案內。這使您的應用程式結構保持精簡,並且意味著您無需搜尋多個檔案來管理異常狀況處理。

以下是 Laravel 11 發行說明 (bootstrap/app.php) 中的程式碼範例:

->withExceptions(function (Exceptions $exceptions) {
    $exceptions->dontReport(MissedFlightException::class);
 
    $exceptions->reportable(function (InvalidOrderException $e) {
        // ...
    });
})

在routes/console.php中可直接呼叫排程

由於新的 Schedule facade,現在安排排程任務就像在 routes/console.php 檔案中新增幾行一樣簡單。不再需要控制台核心。

#在routes/console.php中:

use Illuminate\Support\Facades\Schedule;
 
Schedule::command('some-service:sync')->daily();

最小化的base controller類別

Laravel 11 中的base controller類別已精簡化。 AuthorizesRequests 和 ValidatesRequests 特徵仍然存在,但您現在也必須選擇加入。

namespace App\Http\Controllers;
 
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
 
abstract class Controller
{
    use AuthorizesRequests;
}

刪除 DBAL

Laravel 不再依賴 Doctrine DBAL,並且不再需要註冊自訂 Doctrine 類型,來建立或變更先前需要自訂類型的各種欄位型別。

提供每秒速率限制

Laravel 中的速率限制非常容易設定。使用 Laravel 11,您現在可以設定每秒的速率限制。

RateLimiter::for('invoices', function (Request $request) {
    #限制每分鐘的請求量,以下設定表示您的使用者每分鐘還可以發送 120 個請求。
    return Limit::perMinute(120); 
    #限制每秒的請求量,以下設定表示您的使用者將無法在一秒鐘內塞滿 120 個請求,同時仍被限制為每分鐘 120 個請求。
    return Limit::perSecond(2); 
});

全新的偵錯方法 Dumpable

應用程式開發人員和套件作者也可以從這個新功能中受益,可以輕鬆地在可連結類別中添加偵錯方法.

在 Laravel 10 中,dump()和dd()方法是在每個類別中單獨建立的,而在 Laravel 11 中,所有程式碼都合併到我們可以在任何類別中使用的 Dumpable 特徵中。以下是 Laravel 11 中 Illuminate 類別的範例Carbon:

use Illuminate\Support\Traits\Dumpable;
 
class Carbon extends BaseCarbon
{
    use Conditionable, Dumpable;
 
    // ...
}

Dumpable 特徵中的實作dump()如下所示。唯一的區別dd()是程式碼將停止執行並退出:

public function dump(...$args)
{
    dump($this, ...$args);
 
    return $this;
}

console核心已刪除

控制台內核將被刪除,您將能夠直接在routes/console.php.

APP_KEY Rotation(輪替)

在舊版的 Laravel 中,如果變更APP_KEY可能會導致資料庫中的資料損壞。Laravel 11 有一個新的優雅Rotation,它不會破壞舊的加密數據,使用APP_PREVIOUS_KEYS逗號分隔的清單 .env 變數。它將使用新密鑰自動重新加密資料。

新的 Once 方法

Laravel 11 包含一個新的一次性輔助方法,可確保無論您呼叫物件方法多少次,您始終都會獲得相同的值。當您希望確保某些程式碼只運行一次時,once 函數會很有幫助。

新Artisan指令

新增了新的 Artisan 命令以允許快速建立類別、枚舉、介面和特徵:

php artisan make:class
php artisan make:enum
php artisan make:interface
php artisan make:trait

Laravel 更新政策

對於所有 Laravel 版本,提供 18 個月的錯誤修復和 2 年的安全修復。對於包括 Lumen 在內的所有其他程式庫,只有最新的主要版本才會收到錯誤修復。

版本PHP (*)發布錯誤修復直至安全修復直至
Laravel 98.0 – 8.22022 年 2 月 8 日2023 年 8 月 8 日2024 年 2 月 6 日
Laravel 108.1 – 8.32023 年 2 月 14 日2024 年 8 月 6 日2025 年 2 月 4 日
Laravel 118.2 – 8.32024 年 3 月 12 日2025 年 9 月 3 日2026 年 3 月 12 日
128.2 – 8.32025 年第一季2026 年第三季度2027 年第一季

Reference

※本文內容參考自轉載自laravel官方blog、Laravel News報導及benjamincrozat,本網站對其內容之真實性或完整性不負有任何責任,請各位讀者自己評斷內容觀點的真實性及承擔相關後果,如內容有侵犯您的著作請通知我們,我們會盡速下架處理。