首頁  >  文章  >  php框架  >  細說Laravel10新組件:Laravel Pennant

細說Laravel10新組件:Laravel Pennant

藏色散人
藏色散人轉載
2023-04-17 14:20:081134瀏覽

這篇文章為大家帶來了關於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中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除