ホームページ > PHPフレームワーク > Laravel > Laravel10の新コンポーネント:Laravel Pennantの詳細説明

Laravel10の新コンポーネント:Laravel Pennantの詳細説明

藏色散人
リリース: 2023-04-17 14:20:32
転載
1182 人が閲覧しました

この記事では、Laravel に関する関連知識をお届けします。主に Laravel 10 の新しいコンポーネントである Laravel ペナントについて紹介します。コード例もあります。興味のある方は以下をご覧ください。お役に立てば幸いです。 。 ヘルプ。

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'),
        );
    }
}
ログイン後にコピー

ユーザーがベータ テスターであるかどうかに基づいて、アクションを使用して正しい 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);
    }
}
ログイン後にコピー

ご想像のとおり、このパッケージでできることはあなたの想像力によってのみ制限されます。このパッケージを使用して、アプリケーションにどのような改善が加えられるかを確認するのが待ちきれません。

元のアドレス: //m.sbmmt.com/link/c988c2dac3954436ac56147118fb5c73

翻訳アドレス: https://www.php .cn/link/21d58309d158bcb0e3e70a3827221e7c

以上がLaravel10の新コンポーネント:Laravel Pennantの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート