125 lines
4.3 KiB
PHP
125 lines
4.3 KiB
PHP
<?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;
|
||
}
|
||
} |