This commit is contained in:
2025-08-01 18:29:11 +03:00
parent 2f3dd81d0a
commit ccdcc3e047
10 changed files with 1226 additions and 51 deletions

View File

@@ -0,0 +1,125 @@
<?php
namespace goodboyalex\php_db_components_pack\traits\ConditionBuilder;
use goodboyalex\php_db_components_pack\classes\Condition;
use goodboyalex\php_db_components_pack\classes\ConditionBuilder;
/**
* Трейт для построителя условий запроса выборки, отвечающий за задание логических операторов в цепочку условий.
*
* @author Александр Бабаев
* @package php_components_pack
* @version 1.0
* @since 1.0
*/
trait ConditionBuilderLogicalOperationSet
{
/**
* Добавляет логический оператор.
*
* @param string $operator Оператор.
*
* @return false|ConditionBuilder Возвращает объект для цепочек или <code>false</code>, если оператор не верный.
*/
public function AddLogicalOperator (string $operator): false|ConditionBuilder
{
// Подготавливаем оператор
$operator = self::PrepareLogicalOperator($operator);
// Проверяем оператор, и если он не верный
if ($operator === false)
// - то возвращаем false
return false;
// Добавляем условие
$this->Conditions[] = $operator;
// Возвращаем объект
return $this;
}
/**
* Добавляет логическое И.
*
* @return ConditionBuilder Возвращает объект для цепочек.
*/
public function And (): ConditionBuilder
{
// Добавляем условие
$this->Conditions[] = Condition::LOGIC_AND;
// Возвращаем объект
return $this;
}
/**
* Добавляет логическое ИЛИ.
*
* @return ConditionBuilder Возвращает объект для цепочек.
*/
public function Or (): ConditionBuilder
{
// Добавляем условие
$this->Conditions[] = Condition::LOGIC_OR;
// Возвращаем объект
return $this;
}
/**
* Добавляет логическое НЕ.
*
* @return ConditionBuilder Возвращает объект для цепочек.
*/
public function Not (): ConditionBuilder
{
// Добавляем условие
$this->Conditions[] = Condition::LOGIC_NOT;
// Возвращаем объект
return $this;
}
/**
* Добавляет логическое ИСКЛЮЧАЮЩЕЕ ИЛИ.
*
* @return ConditionBuilder Возвращает объект для цепочек.
*/
public function Xor (): ConditionBuilder
{
// Добавляем условие
$this->Conditions[] = Condition::LOGIC_XOR;
// Возвращаем объект
return $this;
}
/**
* Добавляет логическое НЕ И.
*
* @return ConditionBuilder Возвращает объект для цепочек.
*/
public function Nand (): ConditionBuilder
{
// Добавляем условие
$this->Conditions[] = Condition::LOGIC_NAND;
// Возвращаем объект
return $this;
}
/**
* Добавляет логическое НЕ ИЛИ.
*
* @return ConditionBuilder Возвращает объект для цепочек.
*/
public function Nor (): ConditionBuilder
{
// Добавляем условие
$this->Conditions[] = Condition::LOGIC_NOR;
// Возвращаем объект
return $this;
}
}