Bitrix-D7  20.5.0
Класс SqlExpression

Открытые члены

 __construct ()
 
 compile ()
 Returns $expression with replaced placeholders. Подробнее...
 
 __toString ()
 
 getConnection ()
 
 setConnection ($connection)
 

Защищенные члены

 execPlaceholders ($matches)
 Used by compile method to replace placeholders with values. Подробнее...
 

Защищенные данные

 $expression
 
 $args = array()
 
 $pattern = '/([^\\\\]|^)(\?[#sif]?)/'
 
 $i
 
 $connection
 

Подробное описание

См. определение в файле sqlexpression.php строка 18

Конструктор(ы)

◆ __construct()

__construct ( )
Аргументы
string$expressionSql expression.
string,...$args Substitutes.
Исключения

См. определение в файле sqlexpression.php строка 39

40  {
41  $args = func_get_args();
42 
43  if (!isset($args[0]))
44  {
45  throw new \Bitrix\Main\ArgumentException('No pattern has been found for SqlExpression');
46  }
47 
48  $this->expression = $args[0];
49 
50  for ($i = 1, $n = count($args); $i < $n; $i++)
51  {
52  $this->args[] = $args[$i];
53  }
54  }

Методы

◆ __toString()

__toString ( )

См. определение в файле sqlexpression.php строка 132

133  {
134  return $this->compile();
135  }
compile()
Returns $expression with replaced placeholders.

◆ compile()

compile ( )

Returns $expression with replaced placeholders.

Возвращает
string

См. определение в файле sqlexpression.php строка 61

62  {
63  $this->i = -1;
64 
65  if (mb_strpos($this->expression, '\\') === false)
66  {
67  // regular case
68  return preg_replace_callback($this->pattern, array($this, 'execPlaceholders'), $this->expression);
69  }
70  else
71  {
72  // handle escaping \ and \\
73  $parts = explode('\\\\', $this->expression);
74 
75  foreach ($parts as &$part)
76  {
77  if (!empty($part))
78  {
79  $part = preg_replace_callback($this->pattern, array($this, 'execPlaceholders'), $part);
80  }
81  }
82 
83  $parts = str_replace('\\?', '?', $parts);
84 
85  return implode('\\\\', $parts);
86  }
87  }

◆ execPlaceholders()

execPlaceholders (   $matches)
protected

Used by compile method to replace placeholders with values.

Аргументы
array$matchesMatches found by preg_replace.
Возвращает
string

См. определение в файле sqlexpression.php строка 96

97  {
98  $sqlHelper = $this->getConnection()->getSqlHelper();
99 
100  $this->i++;
101 
102  $pre = $matches[1];
103  $ph = $matches[2];
104 
105  if (isset($this->args[$this->i]))
106  {
107  $value = $this->args[$this->i];
108 
109  if ($ph == '?' || $ph == '?s')
110  {
111  $value = "'" . $sqlHelper->forSql($value) . "'";
112  }
113  elseif ($ph == '?#')
114  {
115  $value = $sqlHelper->quote($value);
116  }
117  elseif ($ph == '?i')
118  {
119  $value = (int) $value;
120  }
121  elseif ($ph == '?f')
122  {
123  $value = (float) $value;
124  }
125 
126  return $pre . $value;
127  }
128 
129  return $matches[0];
130  }

◆ getConnection()

getConnection ( )
Возвращает
Connection

См. определение в файле sqlexpression.php строка 140

141  {
142  if ($this->connection === null)
143  {
144  $this->connection = Application::getConnection();
145  }
146 
147  return $this->connection;
148  }
static getConnection($name="")
Static method returns database connection for the specified name.

◆ setConnection()

setConnection (   $connection)
Аргументы
Connection$connection

См. определение в файле sqlexpression.php строка 153

154  {
155  $this->connection = $connection;
156  }

Поля

◆ $args

$args = array()
protected

См. определение в файле sqlexpression.php строка 24

◆ $connection

$connection
protected

См. определение в файле sqlexpression.php строка 31

◆ $expression

$expression
protected

См. определение в файле sqlexpression.php строка 21

◆ $i

$i
protected

См. определение в файле sqlexpression.php строка 28

◆ $pattern

$pattern = '/([^\\\\]|^)(\?[#sif]?)/'
protected

См. определение в файле sqlexpression.php строка 26


Объявления и описания членов класса находятся в файле: