静的WebリソースへのアクセスをPHPロジックで制御しています。Webサーバーを介したディレクトリベースの認証は適切ではないか、簡単に実行できないためです。
物事の組み合わせにより、アクセスを許可するか拒否するかが決まります。そして、これらのルールは時々変更されます。
最初は、単純な正規表現パスの一致と、1つのセッション変数のチェックでした。関係する変数がさらにいくつかあるため、現在はより複雑になっています。
ルールをすばやく簡単に変更できるように、これをリファクタリングする方法を考えています。それが単純だったとき「これとこれがあれば、それから配達し、そうでなければ403」。ストレートPHPでそれを行うのは問題ありませんでした。現在、条件はより複雑になっており、それぞれに共通しているがわずかに異なる条件が含まれる2つのレベルのネストがあります。これはすべてリファクタリングするのに十分簡単ですが、最も直感的で更新するのは簡単ではありません。
私は2つのことのうちの1つを考えています。
トップレベルの条件ごとにクラスを確立し、ストラテジーファクトリーを使用して適切なものを選択します。共通ビットを含む基本クラスからそれらすべてを導出し、必要なものは何でもオーバーロードします。条件が変わると、これでもシャッフルが発生しやすいと思います。
ファイアウォールルールのような順序付けられたルールの2次元配列を繰り返す単純なエンジンを作成します。何かのようなもの:
<allow|deny>, <auth_group>, <path_regex>, <other vars>
これについては十分に考えていませんが、更新したり、人間として読んだりする方が簡単なようです。
あなたならどうしますか?これに使用できる確立されたパターンまたはライブラリはありますか?
私はしばらく前に別のアプリでこの同様の問題に直面しました。いくつかのレベルの条件に基づいて、ルールと結果を連鎖させる簡単な更新方法が必要な場合。これはそのアプリほど複雑ではありませんが、この種の問題を解決するために人々が使用するパターンについて聞いてみたいと思います。