Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Laravel Pennantは、機能フラグの値をどのように保存して取得しますか


Laravel Pennantは、機能フラグの値をどのように保存して取得しますか


Laravel Pennantは、メモリ内のアレイドライバーと永続的なデータベースドライバーという2つの主要なドライバーをサポートする柔軟なストレージシステムを使用して、FLAGの値を備えています。

ストレージメカニズム:

- アレイドライバー:このドライバーは、解決された機能フラグ値をメモリ内配列に保存します。それは高速ですが、一時的です。つまり、保存された機能フラグの値は、現在のリクエストライフサイクル中にのみ存在し、その後失われます。これは、持続性が必要ない単純または一時的なユースケースに役立ちます。

-Database Driver(デフォルト):Pennantは、Pennantの移行を実行することで作成された「機能」テーブルで、リレーショナルデータベースで機能フラグ値を持続できます。このドライバーは、解決された機能フラグの値を永続的に保存し、複数のリクエストとサーバーで値を共有できるようにします。複数のサーバーやサーバーレス環境で実行されるアプリケーションに最適です。また、データベースドライバーは、単一のリクエスト中にメモリ内キャッシュを使用して、同じ機能フラグの繰り返しデータベースクエリを回避し、パフォーマンスを向上させます[1] [2] [5]。

機能フラグの定義と解決方法:

- 機能フラグは、ロジックを含む閉鎖を使用して定義され、機能がアクティブかどうかを判断します。これらの閉鎖は、認証されたユーザーなどのパラメーターを受け入れることができ、スコープされた機能フラグを可能にします(たとえば、管理者ユーザーのみを有効にすることができます)。

- 機能フラグが最初に特定のスコープ(ユーザーなど)がチェックされると、Pennantは閉鎖を実行して機能の値を解決します。この解決された値は、構成されたストレージドライバー(配列またはデータベース)に保存されます。

- 同じ機能と範囲の後続のチェックで、Pennantはパフォーマンスを最適化する代わりに、ストレージドライバーから保存された値を取得します[2] [3]。

機能フラグの値を取得:

- 「機能:: Active( 'feature-name') `などのメソッドを使用して単一の機能フラグの値を取得できます。有効になっているか(boolean)または` falue :: value( 'feater-name') `を確認します。

-Pennantは、 `feature :: values(['feature1'、 'feature2'])`または `feature :: all()`など、複数の機能フラグ値を一度に取得する方法も提供します。

- 機能クラスを動的に検出および登録して、すべての機能フラグ[1] [2]を取得するときにそれらが含まれることを確認できます。

まとめ:

Laravel Pennantは、ユーザー定義のロジッククロージャーを実行することにより機能フラグ値を解決し、これらの解決された値をメモリ内配列に一時的に保存するか、データベーステーブルに永続的に保存します。このストレージメカニズムにより、Pennantは、ユーザーごとのスコープフラグを含む単純なユースケースの両方をサポートすることなく、後続の要求で機能フラグ状態を効率的に取得できます。デフォルトおよび推奨されるアプローチは、特にマルチサーバーまたは生産環境で、持続的なストレージにデータベースドライバーを使用することです。一方、アレイドライバーは一時的またはテストシナリオに適しています[1] [2] [5]。

引用:
[1] https://laravel.com/docs/11.x/pennant
[2] https://www.honeybadger.io/blog/a-guide-to-feature-flags-in-laravel/
[3] https://www.reddit.com/r/laravel/comments/10yto7q/laravel_pennant_simple_and_lightweight_feature/
[4] https://redberry.international/laravel-pennant-feature-flagging-made-easy/
[5] https://wpwebinfotech.com/blog/laravel-pennant-guide/
[6] https://dev.to/saurabh-dhariwal/how-to-manage-feature-flags-with-laravel-pennant-in-2024-1phb
[7] https://stackoverflow.com/questions/77751003/laravel-pennant-store-against-session-a-b-testing
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5