Skip to content

Commit a7bebd1

Browse files
arkanovasarkanovas
andauthored
Fix no space comment 1.5 (#5)
1. Фикс запросов с многострочными комментариями без пробелов - захватывает лишний текст/код 2. Фикс построения запроса при использовании биндинга с типом "text" - если забыли подставить значение, подставляем NULL. 3. Немного форматирования и добавление комментариев. --------- Co-authored-by: arkanovas <[email protected]>
1 parent f52f9fb commit a7bebd1

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

Parser.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,17 @@
1212
* --*names AND t.name IN (:@names)
1313
* =>
1414
* AND t.name IN (:names_1, :names_2, :names_3, ...)
15+
*
16+
* Изначально рассчитано, что параметры могут приходить в следующем виде:
17+
* [':p1'=>'v1', ':p2' => ['value', 'PDO_SQL_TYPE'], ':p3' => ['value', 'bind'=>'text'], ':p4' => [['v1', 'v2', ...]]]
18+
* Второй способ никогда не видел, может в очень ранних проектах.
19+
* Третий способ тоже сомнительный, обычно пишут: ':p3' => ['bind' => 'text', 'value' => $value] - позиционно определять
20+
* параметры не лучший способ, правильнее задавать явно.
21+
* Четвертый способ тоже несколько странный и не соответствует способу для первого Yii - там просто указывали массив (не
22+
* вложенный).
23+
* Кроме того есть еще дополнительный тип биндинга - "tuple", не нашел в наших проектах его использования.
24+
* Ввиду 2-го и 3-го способов не получится уже реализовать простой способ указания массива, надо постоянно помнить про
25+
* вложенность.
1526
*/
1627
class Parser
1728
{
@@ -69,7 +80,8 @@ public function getSimplifiedParams()
6980
}
7081

7182
/**
72-
* Конвертирует параметры запроса из расширенного формата в параметры пригодные для \yii\db\Command::bindValues.
83+
* Конвертирует параметры запроса из расширенного формата в параметры пригодные для \yii\db\Command::bindValues().
84+
* public function bindParam($name, &$value, $dataType = null, $length = null, $driverOptions = null)
7385
* @param array $params Параметры построения запроса.
7486
* @return array
7587
*/
@@ -126,6 +138,7 @@ private function simplifyParams(array $params)
126138
$newParams[$key] = $value;
127139
}
128140
}
141+
129142
return $newParams;
130143
}
131144

@@ -221,7 +234,7 @@ private function replaceComment($comment, $queryInComment, $paramName, $replaceN
221234
}
222235
} elseif (is_array($paramValue)) {
223236
/**
224-
* Значение параметра - это массив, но почему-то без элемента "bind".
237+
* Значение параметра - это массив, но без элемента "bind".
225238
* Это случай, когда у нас элементы для списка значений IN.
226239
* Там массив значений внутри массива - т.е. первым элементом массива является массив значений
227240
* "связанной" переменной.

0 commit comments

Comments
 (0)