細(xì)說(shuō)Laravel10新組件:Laravel Pennant

本篇文章給大家?guī)?lái)了關(guān)于laravel的相關(guān)知識(shí),其中主要跟大家介紹laravel 10的新組件:laravel pennant,有代碼示例,感興趣的朋友下面一起來(lái)看一下吧,希望對(duì)大家有幫助。

Laravel Pennant 是由 Laravel 團(tuán)隊(duì)創(chuàng)建的一個(gè)包,它將隨 Laravel 10 一起提供,為您的應(yīng)用程序提供功能標(biāo)志。

功能標(biāo)志使您能夠自信地逐步推出新的應(yīng)用程序功能、A/B 測(cè)試新的接口設(shè)計(jì)、補(bǔ)充基于主干的開發(fā)策略等等。

Laravel 10 是官方提供的一系列軟件包中的最新成員,意味著我們現(xiàn)在擁有了一個(gè)構(gòu)建良好且經(jīng)過(guò)良好測(cè)試的包,為我們提供了一些強(qiáng)大的功能。

分解包的功能,我們可以了解這個(gè)包給我們提供了什么。

您可以簡(jiǎn)單的使用您的AppServiceProvider去創(chuàng)建新功能。如下所示:

public?function?boot():?void { ????Feature::define('beta-testers',?fn?(User?$user)?=>?match?(true)?{ ????????$user->isBetaTester()?=>?true,?default?=>?false,???? ????}); }

這是在你的應(yīng)用中定義功能的一種非常干凈和簡(jiǎn)單的方式。但是,你也可以使用基于類的方法來(lái)實(shí)現(xiàn)功能:

class?BetaTesters { ????public?function?resolve(User?$user):?mixed ????{ ????????return?match?(true)?{ ????????????$user->isBetaTester()?=>?true, ????????????default?=>?false, ????????}; ????} }

翻閱文檔,我發(fā)現(xiàn)有很多可以使用的方式。讓我們來(lái)看看文檔中的一個(gè)示例,看看可以對(duì)它做些什么。

class?PodcastController { ????public?function?index(Request?$request):?Response ????{ ????????return?Feature::when(NewApi::class, ????????????fn?()?=>?$this->resolveNewApiResponse($request), ????????????fn?()?=>?$this->resolveLegacyApiResponse($request), ????????); ????} }

繼續(xù)看,這是一個(gè)有版本的 API – 你可以根據(jù)用戶是否具有訪問(wèn)權(quán)限來(lái)控制請(qǐng)求的去向。讓我們擴(kuò)展一下這個(gè)例子。

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'), ????????); ????} }

我們可以根據(jù)用戶是否是 Beta 測(cè)試人員,使用我們的操作重定向到正確的 API 路由。我們可以將其移動(dòng)到更高的中間件層,以使其更簡(jiǎn)單。

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); ????} }

正如你可以想象的那樣,你可以用 Laravel 10 做什么只會(huì)受限于你的想象力。我迫不及待地想使用這個(gè)軟件包,看看它能為我的應(yīng)用程序添加哪些改進(jìn)。

原文地址:Laravel 10

譯文地址:Laravel 10

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊8 分享