Laravel Pennantのbeforeフックの紹介

Laravel Pennantのbeforeフックの紹介

Laravel Pennantは、アプリケーション内での機能フラグの管理を容易にする軽量なライブラリです。v1.14.0で新たに「beforeフック」が導入され、機能フラグの解決プロセスをより柔軟に制御できるようになりました。

beforeフックとは?

beforeフックは、クラスベースの機能定義において、ストレージドライバにアクセスする前に機能の解決をインターセプト(介入)するためのメソッドです。このフックを使用することで、特定の条件下でストレージから値を取得する前に、直接値を返すことが可能になります。返された値はストレージには保存されず、そのリクエスト内でのみ有効となります。

beforeフックの使用例

例えば、特定の日付以降に機能を有効にしたい場合、以下のようにbeforeフックを実装できます:

<?php

namespace App\Features;

use Illuminate\Support\Carbon;

class NewFeature
{
    public function before($scope)
    {
        // 2025年3月1日以降に機能を有効化
        if (Carbon::now()->gte(Carbon::parse('2025-03-01'))) {
            return true;
        }

        // それ以外の場合はnullを返す
        return null;
    }

    public function resolve($scope)
    {
        // 通常の解決ロジック
        return false;
    }
}

上記の例では、beforeメソッドで現在の日付が2025年3月1日以降であるかをチェックし、該当する場合はtrueを返して機能を有効化します。それ以外の場合はnullを返し、通常のresolveメソッドが呼び出されます。

beforeフックの利点

  • スケジュールされたリリース:特定の日付以降に機能を自動的に有効化することができます。
  • ストレージアクセスの削減:特定の条件下でストレージへのアクセスを回避し、パフォーマンスを向上させることができます。
  • 柔軟な機能管理:ユーザーの属性やリクエストの内容に応じて、動的に機能の有効・無効を切り替えることが可能です。

おわりに

beforeフックの導入により、Laravel Pennantはさらに柔軟で効率的な機能フラグ管理を提供するようになりました。この新機能を活用して、アプリケーションのリリース戦略やユーザーエクスペリエンスを向上させることが期待できます。

詳細や具体的な実装については、以下のプルリクエストをご参照ください: https://github.com/laravel/pennant/pull/111