58 lines
1003 B
PHP
Executable File
58 lines
1003 B
PHP
Executable File
<?php
|
|
|
|
namespace Vn\Sql;
|
|
|
|
require_once ('vn/lib/lib.php');
|
|
require_once ('vn/sql/value.php');
|
|
|
|
class Render
|
|
{
|
|
static function toString (&$query, &$paramsMap = NULL)
|
|
{
|
|
if (isset ($paramsMap) && is_array ($paramsMap) && count ($paramsMap) > 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];
|
|
}
|
|
}
|
|
|
|
?>
|