0) { $i = 0; $params = []; foreach ($paramsMap as $key => $value) $params[$key] = (new Value ($value))->render (); $replaceFunc = function ($matches) use (&$params, &$i) { $key = substr ($matches[0], 1); if (strlen ($key) == 0) $key = $i++; if (isset ($params[$key])) return $params[$key]; return '#'. $key; }; return preg_replace_callback ('/#\w*/', $replaceFunc, $query); } else return $query; } static function printf ($arg) { $count = count ($arg); if ($count > 1) { for ($n = 1; $n < $count; $n++) { $obj = new Value ($arg[$n]); $arg[$n] = $obj->render (); } return call_user_func_array ('sprintf', $arg); } else return $arg[0]; } } ?>