クエリのような条件ステートメントを処理できるオブジェクトを作成しようとしています。これは、使用されている「結合」のタイプに基づいて、2 つの条件を「結合」して、それらの間に依存関係を作成できるようにするためです。現在、次のメソッドを含む単純なオブジェクトがあります。
public function addCondition ( Condition $condition, $join = null )
{
$this->conditions[] = $condition;
}
public function validate ( )
{
foreach ( $this->conditions as $condition )
{
$result = $condition->validate( );
[...]
}
}
問題は、validate メソッドの戻り値に影響を与える 2 つのステートメント間で条件付き結合を実行できるようにする必要があることです。アイデアは、次のように条件を指定できるということです。
$this->addCondition($condition_1);
$this->addCondition($condition_2, 'AND');
$this->addCondition($condition_3, 'NOT');
これにより、3 番目の条件の結果が最初の条件の結果に影響を与えるように後方連鎖することを指定するために必要なロジックが生成されます。
例では、次のように言いましょう。
condition_1 = リンゴは赤 condition_2 = リンゴは熟しています condition_3 = りんごはゴールデンデリシャス
これを使用して、熟した赤く金色のおいしいリンゴを渡すと、validate() の結果が false になると仮定する必要があります。condition_3 の「結合」が NOT であるため、メソッドは失敗するはずです。
ただし、現時点では、メソッド全体の結果が前の条件の結果と結合方法に依存することをコードに伝える方法はありません。
どんな助けでも大歓迎です!ありがとう。