@@ -23,10 +23,11 @@ class Parser
2323 */
2424 public function __construct ($ sql , $ params = [])
2525 {
26- if (substr ($ sql , -4 ) === '.sql ' )
26+ if (substr ($ sql , -4 ) === '.sql ' ) {
2727 $ this ->sql = file_get_contents ($ sql );
28- else
28+ } else {
2929 $ this ->sql = $ sql ;
30+ }
3031
3132 $ this ->params = $ params ;
3233 $ this ->parseSql ();
@@ -76,13 +77,15 @@ private function simplifyParams($params)
7677 $ key = ': ' . ltrim ($ key , ': ' );
7778 if (is_array ($ value )) {
7879 if (isset ($ value [0 ]) && is_array ($ value [0 ])) {
79- foreach ($ value [0 ] as $ valKey => $ valVal )
80+ foreach ($ value [0 ] as $ valKey => $ valVal ) {
8081 $ newParams [$ key . '_ ' . $ valKey ] = $ valVal ;
82+ }
8183 } elseif (!isset ($ value ['bind ' ]) || $ value ['bind ' ] === true ) {
82- if (isset ($ value [0 ]) && isset ($ value [1 ]))
84+ if (isset ($ value [0 ]) && isset ($ value [1 ])) {
8385 $ newParams [$ key ] = [$ value [0 ], $ value [1 ]];
84- elseif (isset ($ value [0 ]))
86+ } elseif (isset ($ value [0 ])) {
8587 $ newParams [$ key ] = $ value [0 ];
88+ }
8689 }
8790 } else {
8891 $ newParams [$ key ] = $ value ;
@@ -92,7 +95,6 @@ private function simplifyParams($params)
9295 return $ newParams ;
9396 }
9497
95-
9698 /**
9799 * Функция разбора и подготовки текста sql запроса.
98100 */
@@ -129,9 +131,10 @@ private function parseSql()
129131 */
130132 private function replaceComment ($ comment , $ queryInComment , $ paramName )
131133 {
132- $ paramName = ltrim ($ paramName , ': ' );
133- if (array_key_exists ($ paramName , $ this ->params )) {
134- $ paramValue = $ this ->params [$ paramName ];
134+ $ param = $ this ->getParam ($ paramName );
135+ if ($ param ) {
136+ $ paramName = $ param [0 ];
137+ $ paramValue = $ param [1 ];
135138 if (is_array ($ paramValue )) {
136139 $ value = isset ($ paramValue [0 ]) ? $ paramValue [0 ] : null ;
137140 $ bind = isset ($ paramValue ['bind ' ]) ? $ paramValue ['bind ' ] : true ;
@@ -156,4 +159,22 @@ private function replaceComment($comment, $queryInComment, $paramName)
156159
157160 $ this ->sql = str_replace ($ comment , $ queryInComment , $ this ->sql );
158161 }
162+
163+ /**
164+ * Ищет параметр в массиве $this->params
165+ * @param string $name имя параметра
166+ * @return array|bool массив ['имя_параметра_без_ведущего_двоеточия', 'значение_параметра'] или ложь если параметра нет
167+ */
168+ private function getParam ($ name )
169+ {
170+ $ name = ltrim ($ name , ': ' );
171+
172+ if (array_key_exists ($ name , $ this ->params )) {
173+ return [$ name , $ this ->params [$ name ]];
174+ } elseif (array_key_exists (': ' . $ name , $ this ->params )) {
175+ return [$ name , $ this ->params [': ' . $ name ]];
176+ }
177+
178+ return false ;
179+ }
159180}
0 commit comments