Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Класс - конструктор условий.
- */
- class ormCondition
- {
- protected $elements = array();
- protected $decorator = null;
- public function __construct($array = array())
- {
- if (!empty($array)) {
- if (isset($array[0])) {
- $this->addFromArray($array);
- } else {
- $this->addEqualsFromArray($array);
- }
- }
- }
- //------------------------------------------------------------------------------
- /**
- * Добавляет условие сравнения.
- * @param string $type тип условия ('=', '<', '>', '<=', '>=', 'between')
- * @param array|string $fields Массив имен полей (или имя одного поля), учавствующих в сравнении
- * @param array|string $values Массив значений (или одно значение), учавствующих в сравнении
- */
- public function add($type, $fields, $values)
- {
- $this->elements[] = new ormExpression($type, $fields, $values);
- return $this;
- }
- //------------------------------------------------------------------------------
- /**
- * Добавляет условия из массива типа:
- * array(
- * array(
- * 'type' => <тип_условия>,
- * 'fields' => <поля_условия>,
- * 'values' => <значения_условия>,
- * )
- * array(
- * 'type' => <тип_условия>,
- * 'fields' => <поля_условия>,
- * 'values' => <значения_условия>,
- * )
- * ...
- *
- * )
- * @param array $array Массив условий
- */
- public function addFromArray($array)
- {
- foreach ($array as $exp) {
- $this->add($exp['type'], $exp['fields'], $exp['values']);
- }
- return $this;
- }
- //------------------------------------------------------------------------------
- /**
- * Добавляет условия типа '=' из ассоциативного массива.
- * @param array $array Ассоциативный массив
- */
- public function addEqualsFromArray($array)
- {
- foreach ($array as $field => $value) {
- $this->add('=', $field, $value);
- }
- return $this;
- }
- //------------------------------------------------------------------------------
- public function setDecorator($dec_obj)
- {
- $this->decorator = $dec_obj;
- }
- //------------------------------------------------------------------------------
- public function getStr($decorator = null)
- {
- if (!is_object($decorator)) {
- $decorator = $this->decorator;
- }
- $txt_array = array();
- foreach ($this->elements as $element) {
- $txt_array[] = '(' . $element->getStr($decorator) . ')';
- }
- return implode(' AND ', $txt_array);
- }
- }
Add Comment
Please, Sign In to add comment