Я пытаюсь создать объект, способный обрабатывать условные операторы, подобные запросам. Поэтому я могу «соединить» два условия вместе, чтобы создать зависимость между ними в зависимости от типа используемого «соединения». В настоящее время у меня есть простой объект, который содержит следующие методы:
public function addCondition ( Condition $condition, $join = null )
{
$this->conditions[] = $condition;
}
public function validate ( )
{
foreach ( $this->conditions as $condition )
{
$result = $condition->validate( );
[...]
}
}
Проблема в том, что мне нужно иметь возможность выполнить условное соединение между двумя операторами, что повлияет на возвращаемое значение метода validate. Идея состоит в том, что вы могли бы поставить условие следующим образом:
$this->addCondition($condition_1);
$this->addCondition($condition_2, 'AND');
$this->addCondition($condition_3, 'NOT');
Затем будет сгенерирована логика, необходимая для указания того, что результаты третьего условия будут обратным звеном, чтобы влиять на результаты первого условия.
В этом примере скажем:
condition_1 = Apple is Red
condition_2 = Apple is Ripe
condition_3 = Apple is Golden Delicious
Используя это, я должен предположить, что если бы я пропустил спелое, красное и золотистое вкусное яблоко, результат validate () был бы ложным. Метод должен завершиться сбоем, потому что «join» для condition_3 - это НЕ.
Однако в настоящее время нет способа сообщить коду, что результат всего метода зависит от результата предыдущего условия и способа его соединения с ним.
Любая помощь очень ценится! Спасибо.