這篇文章為大家帶來了關於Laravel的相關知識,其中主要跟大家介紹Laravel 10的新組件:Laravel Pennant,有代碼示例,感興趣的朋友下面一起來看一下吧,希望對大家有幫助。
Laravel Pennant 是由 Laravel 團隊創建的一個包,它將隨 Laravel 10 一起提供,為您的應用程式提供功能標誌。
功能標誌可讓您自信地逐步推出新的應用程式功能、A/B 測試新的介面設計、補充基於主幹的開發策略等等。
此軟體包 是官方提供的一系列軟體包中的最新成員,意味著我們現在擁有了一個構建良好且經過良好測試的包,為我們提供了一些強大的功能。
分解套件的功能,我們可以了解這個套件為我們提供了什麼。
您可以簡單的使用您的AppServiceProvider
去建立新功能。如下所示:
public function boot(): void { Feature::define('beta-testers', fn (User $user) => match (true) { $user->isBetaTester() => true, default => false, }); }
這是在你的應用程式中定義功能的一種非常乾淨和簡單的方式。但是,你也可以使用基於類別的方法來實現功能:
class BetaTesters { public function resolve(User $user): mixed { return match (true) { $user->isBetaTester() => true, default => false, }; } }
翻閱文檔,我發現有很多可以使用的方式。讓我們來看看文件中的一個範例,看看可以對它做些什麼。
class PodcastController { public function index(Request $request): Response { return Feature::when(NewApi::class, fn () => $this->resolveNewApiResponse($request), fn () => $this->resolveLegacyApiResponse($request), ); } }
繼續看,這是一個有版本的 API - 你可以根據使用者是否具有存取權限來控制請求的去向。讓我們擴展一下這個例子。
class PodcastController { public function __construct( private readonly RedirectAction $action, ) {} public function index(Request $request): Response { return Feature::when(BetaTester::class, fn () => $this->action->handle('v2'), fn () => $this->action->handle('v1'), ); } }
我們可以根據使用者是否是 Beta 測試人員,使用我們的操作重定向到正確的 API 路由。我們可以將其移動到更高的中間件層,使其更簡單。
class VersionMiddleware { public function handle(Request $request, Closure $next): mixed { if (Feature::active('beta-tester')) { return new RedirectResponse( uri: 'generate the url here', ); } return $next($request); } }
正如你可以想像的那樣,你可以用 此軟體包 做什麼只會受限於你的想像力。我迫不及待地想使用這個軟體包,看看它能為我的應用程式添加哪些改進。
原文網址:https://www.php.cn/link/c988c2dac3954436ac56147118fb5c73
#翻譯網址:https://www.php .cn/link/21d58309d158bcb0e3e70a3827221e7c
以上是細說Laravel10新組件:Laravel Pennant的詳細內容。更多資訊請關注PHP中文網其他相關文章!