一直以來Laravel框架總是一年兩次的框架版本更新,直到Laravel 9後開始有了些改變,改成是一年一次的年度更新,除非核心Symfony中間有做其他異動,團隊才會在Symfony發布後兩個月,進行Laravel臨時更新,所以之後大家就掌握一個原則,之後每年的第一個季度,Laravel就會有新的版本發表,本篇幫大家整理一下Laravel 11的相關新功能與原功能更新,希望你看完本篇分享,會讓你對於是否要使用Laravel 11有些基本想法喔。
Laravel 11 新功能與功能更新
Table of Contents
更纖薄的應用程式架構
隨著 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 9 | 8.0 – 8.2 | 2022 年 2 月 8 日 | 2023 年 8 月 8 日 | 2024 年 2 月 6 日 |
Laravel 10 | 8.1 – 8.3 | 2023 年 2 月 14 日 | 2024 年 8 月 6 日 | 2025 年 2 月 4 日 |
Laravel 11 | 8.2 – 8.3 | 2024 年 3 月 12 日 | 2025 年 9 月 3 日 | 2026 年 3 月 12 日 |
12 | 8.2 – 8.3 | 2025 年第一季 | 2026 年第三季度 | 2027 年第一季 |
Reference
- laravel官方blog說明:https://blog.laravel.com/laravel-11-now-available
- laravel news報導:https://laravel-news.com/laravel-11
- benjamincrozat:https://benjamincrozat.com/laravel-11#optional-api-and-broadcast-route-files
※本文內容參考自轉載自laravel官方blog、Laravel News報導及benjamincrozat,本網站對其內容之真實性或完整性不負有任何責任,請各位讀者自己評斷內容觀點的真實性及承擔相關後果,如內容有侵犯您的著作請通知我們,我們會盡速下架處理。
你好,我是RD爸,希望透過我的紀錄,可以帶給你一些新的想法~ 專注於各式3C產品的開箱評測、程式相關技術及理財筆記。
email ►[email protected]