一直以來Laravel框架總是一年兩次的框架版本更新,直到Laravel 9後開始有了些改變,改成是一年一次的年度更新,除非核心Symfony中間有做其他異動,團隊才會在Symfony發布後兩個月,進行Laravel臨時更新,所以之後大家就掌握一個原則,之後每年的第一個季度,Laravel就會有新的版本發表,本篇幫大家整理一下Laravel 10的相關新功能與原功能更新,希望你看完本篇分享,會讓你對於是否要使用Laravel 10有些基本想法喔。
Laravel 10 新功能與功能更新
Table of Contents
停止支援PHP 8.0
PHP 8.1是Laravel 10中最低要求的PHP版本。根據Laravel 9分支和GitHub上的框架主分支的比較,一些PHP 8.1的功能,如 readonly 屬性和 array_is_list,預計將在Laravel 10中引入。
Laravel Pennant(新套件)
Laravel Pennant 是由 Laravel 團隊創建的一個套件包,它將隨 Laravel 10 一起提供,為您的應用程式提供 Feature Flags。
Feature Flags使您能夠自信地逐步推出新的應用程式功能、A/B 測試新的介面設計、補充基於主幹的開發策略等等。
Laravel Process layer
The Laravel Process service makes testing and running CLI processes a dream to work with.
use Illuminate\Support\Facades\Process;
$result = Process::run('ls -la');
$result->successful();
$result->failed();
$result->exitCode();
$result->output();
$result->errorOutput();
$result->throw();
$result->throwIf($condition);
Process 層包括開箱即用的豐富功能,例如:
• 在運行之前構建流程實例的 Fluent 流程方法
• 接收到的過程輸出處理
• 非同步進程
• 進程池
• 豐富的測試功能通過fake()
• 防止測試期間的雜散過程
測試過程從未如此簡單。
Laravel 10 骨架中的原生型態宣告
在 Laravel 10 中,應用程式骨架代碼將具有原生型態宣告。這意味著框架生成的用戶空間中的任何代碼都將具有類型提示和返回類型。我們的文章討論了有關該方法的注意事項,我們認為您將來在創建新項目時會喜歡添加的類型。
添加類型的方式為 Laravel 專案帶來了最新的 PHP 類型提示功能,而不會破壞框架級別的向後相容性:
• 返回類型
• 方法參數
• 盡可能刪除冗餘注釋
• 在閉包參數中允許用戶土地類型
• 不包括類型屬性
可調用的驗證規則成為預設規則
從 Laravel 10 開始,可調用的驗證規則 現在是預設的規則。 當你通過 artisan 創建一個新的驗證規則時,以下是你能在預想中得到的結果:
# Laravel 9 創建了一個規則類,實現了
# Illuminate\Contracts\Validation\Rule 介面
artisan make:rule Uppercase
# Laravel 9 創建一個可調用和隱性規則的標誌
artisan make:rule Uppercase --invokable
artisan make:rule Uppercase --invokable --implicit
# Laravel 10 預設會創建一個可調用的規則
artisan make:rule Uppercase
# Laravel 10 隱性規則
artisan make:rule Uppercase --implicit
測試的設定檔選項
Laravel 10 的一個新特性是一個--profile
選項,它可以讓你輕鬆地在你的應用程式中找到任何慢速測試程式(Phpunit)。
這個--profile
選項應該有助於保持你的測試快速,並幫助你修復慢速測試或更好地分組它們,以便更容易不總是運行它們。
新的字串密碼helper
Str::password
方法可以生成給定長度的安全、隨機的密碼。密碼將由字母、數字、符號和空格所組成。預設情況下,密碼的長度為 32 個字元:
use Illuminate\Support\Str;
$password = Str::password();
// 'EbJo2vE-AS:U,$%_gkrV4n,q~1xy/-_4'
$password = Str::password(12);
// 'qwuar>#V|i]N'
棄用來自Laravel 9 的部分功能
Laravel 9 中標記為已棄用的方法在 Laravel 10 中被刪除。我們可以期待發行版本升級指南概述所有不推薦的方法、潛在影響評估,以及如何升級到更接近發行版本。
以下內容是在撰寫本文時, 將 Laravel 框架 master 主分支到 9.x 分支的 對比 中發現的一些棄用點:
- Remove various deprecations Pull Request #41136
- Remove deprecated dates property in Pull Request #42587
- Remove
handleDeprecation
method in Pull Request #42590 - Remove deprecated
assertTimesSent
method Pull Request #42592 - Remove deprecated
ScheduleListCommand
‘s$defaultName
property 419471e - Remove deprecated
Route::home
method Pull Request #42614 - Remove deprecated
dispatchNow
functionality Pull Request #42591
測試 Laravel 10
如果你現在想開始測試 Laravel 10,你可以使用–dev標誌將它安裝在一個新項目中:
laravel new <your-project-name> --dev
升級到 Laravel 10
最簡單的升級方法是利用 Laravel 變化 並且它可以自動地始終保持應用程式的更新,或者根據官方文檔 升級指南。
Reference
- 官方套件說明:https://laravel.com/docs/10.x/releases
- laravel news報導:https://laravel-news.com/laravel-10
※本文轉載自Laravel News報導,本網站對其內容之真實性或完整性不負有任何責任,請各位讀者自己評斷內容觀點的真實性及承擔相關後果,如內容有侵犯您的著作請通知我們,我們會盡速下架處理。
你好,我是RD爸,希望透過我的紀錄,可以帶給你一些新的想法~ 專注於各式3C產品的開箱評測、程式相關技術及理財筆記。
email ►[email protected]