4

私は、仕様を (オプションで) PHP に変換できる仕様パターンを PHP で作成する最善の方法を見つけようとしています。

私はいくつかの新しい方向性を模索しており、それらがどれだけうまく機能するかをテストしています. コードとアイデアは、私の頭の中ではまだ非常に不明確です。

最小限のインターフェイスは次のようになります。

interface IRepository {
    public function get(ISpecification $specification);
}

interface ISpecification {
    public function isSatisfiedBy($candidate);
}

リポジトリが sql データベースを隠している場合、仕様を sql に変換する必要があります。->toSQL() メソッドの追加はアドホックに思えます。仕様を変換するクラスもオプションですが、最終的に sql を生成するのはかなりのオーバーヘッドのようです。

アイデアを歓迎します。

4

1 に答える 1

3

POEAAからの引用(pg.324):

裏で、リポジトリはメタデータマッピング(329)クエリオブジェクト(316)を組み合わせて、基準からSQLコードを自動的に生成します。基準がクエリに自分自身を追加する方法を知っているか、クエリオブジェクト(316)が基準オブジェクトを組み込む方法を知っているか、またはメタデータマッピング(306)自体が相互作用を制御するかどうかは実装の詳細です。

この説明の基準は、もちろん仕様パターンです。toSQLアプリケーションが比較的小さい場合は、基準オブジェクトでメソッドを使用するための提案されたアプローチは問題ないと思います。すでに述べたように、他のルートに行くことはより困難ですが、それはまたより大きな柔軟性とデカップリングを提供します。結局、あなただけが決めることができます。

于 2012-02-18T13:18:02.923 に答える