Guest User

Untitled

a guest
Nov 17th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4. * Класс - конструктор условий.
  5. */
  6. class ormCondition
  7. {
  8. protected $elements = array();
  9. protected $decorator = null;
  10.  
  11.  
  12. public function __construct($array = array())
  13. {
  14. if (!empty($array)) {
  15. if (isset($array[0])) {
  16. $this->addFromArray($array);
  17. } else {
  18. $this->addEqualsFromArray($array);
  19. }
  20. }
  21. }
  22.  
  23. //------------------------------------------------------------------------------
  24. /**
  25. * Добавляет условие сравнения.
  26. * @param string $type тип условия ('=', '<', '>', '<=', '>=', 'between')
  27. * @param array|string $fields Массив имен полей (или имя одного поля), учавствующих в сравнении
  28. * @param array|string $values Массив значений (или одно значение), учавствующих в сравнении
  29. */
  30. public function add($type, $fields, $values)
  31. {
  32. $this->elements[] = new ormExpression($type, $fields, $values);
  33. return $this;
  34. }
  35.  
  36.  
  37. //------------------------------------------------------------------------------
  38. /**
  39. * Добавляет условия из массива типа:
  40. * array(
  41. * array(
  42. * 'type' => <тип_условия>,
  43. * 'fields' => <поля_условия>,
  44. * 'values' => <значения_условия>,
  45. * )
  46. * array(
  47. * 'type' => <тип_условия>,
  48. * 'fields' => <поля_условия>,
  49. * 'values' => <значения_условия>,
  50. * )
  51. * ...
  52. *
  53. * )
  54. * @param array $array Массив условий
  55. */
  56. public function addFromArray($array)
  57. {
  58. foreach ($array as $exp) {
  59. $this->add($exp['type'], $exp['fields'], $exp['values']);
  60. }
  61. return $this;
  62. }
  63.  
  64.  
  65. //------------------------------------------------------------------------------
  66. /**
  67. * Добавляет условия типа '=' из ассоциативного массива.
  68. * @param array $array Ассоциативный массив
  69. */
  70. public function addEqualsFromArray($array)
  71. {
  72. foreach ($array as $field => $value) {
  73. $this->add('=', $field, $value);
  74. }
  75. return $this;
  76. }
  77.  
  78. //------------------------------------------------------------------------------
  79.  
  80. public function setDecorator($dec_obj)
  81. {
  82. $this->decorator = $dec_obj;
  83. }
  84.  
  85. //------------------------------------------------------------------------------
  86.  
  87. public function getStr($decorator = null)
  88. {
  89. if (!is_object($decorator)) {
  90. $decorator = $this->decorator;
  91. }
  92.  
  93. $txt_array = array();
  94.  
  95. foreach ($this->elements as $element) {
  96. $txt_array[] = '(' . $element->getStr($decorator) . ')';
  97. }
  98.  
  99. return implode(' AND ', $txt_array);
  100. }
  101. }
Add Comment
Please, Sign In to add comment