Skip to content

Commit 3f073e8

Browse files
committed
Регистронезависимое раскоментирование переменных fix
1 parent 1882f51 commit 3f073e8

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

Parser.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,13 +233,22 @@ private function replaceComment($comment, $queryInComment, $paramName)
233233
*/
234234
private function getParam($name)
235235
{
236-
$name = mb_strtolower(ltrim($name, ':'));
236+
$name = $outName = mb_strtolower(ltrim($name, ':'));
237+
238+
// Формируем имя параметра на выход точно такое же, какое и забиндено в парметры.
239+
foreach ($this->params as $key => $value) {
240+
if (mb_strtolower($key) == $name) {
241+
$outName = $key;
242+
break;
243+
}
244+
}
245+
237246
$params = array_change_key_case($this->params, CASE_LOWER);
238247

239248
if (array_key_exists($name, $params)) {
240-
return [$name, $params[$name]];
249+
return [$outName, $params[$name]];
241250
} elseif (array_key_exists(':' . $name, $params)) {
242-
return [$name, $params[':' . $name]];
251+
return [$outName, $params[':' . $name]];
243252
}
244253

245254
return false;

tests/SqlParserTest.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public function sqlData()
2020
--*param17 case-insensitive2
2121
--*PARAM18 case-insensitive3
2222
/*param19 :@param19*/
23+
/*param20 :@param20*/
2324
';
2425

2526
return [
@@ -32,14 +33,15 @@ public function sqlData()
3233
[$query, ['param8' => 'v8', 'param9' => 'v9', 'param10' => 'v10'], '/^\s*sql10\s*$/'],
3334
["sql1\n\n\n\n\nsql2", ['param1' => 'v1'], '/^sql1\nsql2$/'],
3435
["sql1", [], '/^sql1$/'],
35-
["-- test\n".$query, [], '/^-- test$/'],
36+
["-- test\n" . $query, [], '/^-- test$/'],
3637
[$query, ['param11' => [['v1', 'v2']]], "/^:param11_0,:param11_1$/"],
3738
["--*param order by param", ['param' => ['v1', 'bind' => 'text']], "/^order by v1$/"],
3839
[$query, ['param12' => 'test'], "/^test multiple$/"],
3940
[$query, ['param14' => 'test'], "/^test multiple$/"],
4041
[$query, ['PARAM17' => 'test'], "/^case-insensitive2$/"],
4142
[$query, ['PARAM18' => 'test'], "/^case-insensitive3$/"],
42-
[$query, ['PARAM19' => [[1, 2]]], "/^:param19_0,:param19_1$/"],
43+
[$query, ['PARAM19' => [[1, 2]]], "/^:PARAM19_0,:PARAM19_1$/"],
44+
[$query, ['PARAM20' => ['bind' => 'tuple', [[1], [2]]]], "/^\(:PARAM20_0_0\),\(:PARAM20_1_0\)$/"],
4345
];
4446
}
4547

@@ -56,11 +58,20 @@ public function paramsData()
5658
return [
5759
[[], []],
5860
[[':simpleName' => 'simpleValue'], [':simpleName' => 'simpleValue']],
59-
[[':simpleNameSimpleValueWithType' => ['simpleValue', \PDO::PARAM_STR]], [':simpleNameSimpleValueWithType' => ['simpleValue', \PDO::PARAM_STR]]],
60-
[[':complexNameSimpleValue' => ['simpleValue', 'bind' => true]], [':complexNameSimpleValue' => 'simpleValue']],
61+
[
62+
[':simpleNameSimpleValueWithType' => ['simpleValue', \PDO::PARAM_STR]],
63+
[':simpleNameSimpleValueWithType' => ['simpleValue', \PDO::PARAM_STR]]
64+
],
65+
[
66+
[':complexNameSimpleValue' => ['simpleValue', 'bind' => true]],
67+
[':complexNameSimpleValue' => 'simpleValue']
68+
],
6169
[[':complexNameBindText' => ['simpleValue', 'bind' => 'text']], []],
6270
[[':complexNameNoBind' => ['bind' => false]], []],
63-
[['arrayName' => [[0, 1, 2, 3]]], [':arrayName_0' => 0, ':arrayName_1' => 1, ':arrayName_2' => 2, ':arrayName_3' => 3]],
71+
[
72+
['arrayName' => [[0, 1, 2, 3]]],
73+
[':arrayName_0' => 0, ':arrayName_1' => 1, ':arrayName_2' => 2, ':arrayName_3' => 3]
74+
],
6475
];
6576
}
6677

0 commit comments

Comments
 (0)