領先的 PHP Web 應用程式框架 Laravel 剛剛發布了 11.30 版本,其中包含令人興奮的新功能和改進,可提高開發人員的工作效率和程式碼靈活性。 讓我們來探索一下關鍵更新。
使用新助理簡化測驗:withDefer()
和 withoutDefer()
Laravel 11.30 引入了 withDefer()
和 withoutDefer()
,由 Tim MacDonald 提供。在使用延遲呼叫測試程式碼時,這些非常寶貴,允許您選擇性地停用延遲以實現精確的斷言控制。
使用 withoutDefer()
的說明性範例:
<code class="language-php">// This won't work correctly User::create(/* ... */); $this->assertAgainstSomeDeferredOutcome(); // This works as intended $this->withoutDefer(); User::create(/* ... */); $this->assertAgainstSomeDeferredOutcome();</code>
這種對測試期間延遲操作的增強控制可以帶來更可靠、更準確的測試結果。
具有 HasUniqueStringIds
特徵的自訂唯一字串 ID
Luke Kuzmish 的貢獻,即 HasUniqueStringIds
特性,使開發人員能夠利用自訂的唯一字串 ID 作為路由鍵,而無需修改 resolveRouteBindingQuery()
。 這擴展了現有的 HasUuids
和 HasUlid
特徵,提供了更大的 ID 生成靈活性。
實作自訂唯一字串 ID:
<code class="language-php">trait HasTwrnsTrait { use HasUniqueStringIds; public function newUniqueId() { return (string) Twrn::new(); } protected function isValidKey($value): bool { return Twrn::isValid($value); } }</code>
此功能允許高度客製化的模型標識符,同時與標準 Laravel 實踐無縫整合。
透過直接枚舉支援增強授權
Johan van Helden 對 AuthorizesRequests
特性的更新現在直接接受支持的枚舉,與 Laravel 最近在整個框架範圍內擁抱枚舉相一致。
透過 authorize()
方法使用枚舉:
<code class="language-php">enum DashboardPermission: string { case VIEW = 'dashboard.view'; } // Previously public function index(): Response { $this->authorize(DashboardPermission::VIEW->value); // ... } // Now public function index(): Response { $this->authorize(DashboardPermission::VIEW); // ... }</code>
這種簡化提高了授權代碼的類型安全性和可讀性。
其他重大增強
版本 11.30 還包含:
Blade::directive
參數擴充了 $bind
功能。 trans_choice()
分隔符號的翻譯替換的 |
問題。 exists()
取代count()
進行效能最佳化。 PostTooLargeException
的錯誤訊息傳遞。 failed_jobs_uuid_unique
的完整性約束違規。 Laravel 11.30 強調了該框架致力於持續改進和開發人員體驗。 透過精細的測試、靈活的模型 ID 和簡化的基於 Enum 的授權,此版本為開發人員提供了強大的新工具,用於編寫更清晰、更有效率的程式碼。 Laravel 仍然是 PHP 開發人員建立健全且功能豐富的 Web 應用程式的首選。
準備好利用 Laravel 來提升您的業務了嗎? 今天就聯絡我們。
以上是Laravel 在測試、模型 ID 和授權方面的飛躍的詳細內容。更多資訊請關注PHP中文網其他相關文章!