php-vn-lib/package/usr/share/php/vn/sql/render.php

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];
}
}
?>