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

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

藏色散人
藏色散人転載
2023-04-17 14:20:081134ブラウズ

この記事では、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);
    }
}

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

元のアドレス: https://www.php.cn/link/c988c2dac3954436ac56147118fb5c73

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

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

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。