Экранирование спецсимволов

mynamekat

Новичок
Экранирование спецсимволов

Здрасьте.
есть такой код:

PHP:
## Простейшая функция для работы с placeholder-ами.


function mysql_qw() {
  // Получаем все аргументы функции.
  $args = func_get_args();
  // Если первый параметр имеет тип "ресурс", то это ID соединения.
  $conn = null;
  if (is_resource($args[0])) $conn = array_shift($args);
  // Формируем запрос по шаблону.
  $query = call_user_func_array("mysql_make_qw", $args);
  // Вызываем SQL-функцию.
  return $conn!==null? mysql_query($query, $conn) : mysql_query($query);
}

// string mysql_make_qw($query, $arg1, $arg2, ...)
// Данная функция формирует SQL-запрос по шаблону $query, 
// содержащему placeholder-ы.
function mysql_make_qw() {
  $args = func_get_args();
  // Получаем в $tmpl ССЫЛКУ на шаблон!!!!!!!!!!!!!!!!!   запроса.
  $tmpl =& $args[0];
  $tmpl = str_replace("%", "%%", $tmpl);
  $tmpl = str_replace("?", "%s", $tmpl);
  // После этого $args[0] также окажется измененным.
  // Теперь экранируем все аргументы, кроме первого.
  foreach ($args as $i=>$v) {
    if (!$i) continue;        // это шаблон
    if (is_int($v)) continue; // целые числа не нужно экранировать
    $args[$i] = "'".mysql_escape_string($v)."'";
  }
  // На всякий случай запорняем 20 последних аргументов недопустимыми
  // значениями, чтобы в случае, если число "?" превышает количество
  // параметров, выдавалась ошибка SQL-запроса (поможет при отладке).
  for ($i=$c=count($args)-1; $i<$c+20; $i++) 
    $args[$i+1] = "UNKNOWN_PLACEHOLDER_$i";
        
  // Формируем SQL-запрос.
  return call_user_func_array("sprintf", $args);
}

Объясните,пожалуйста, почему в function mysql_make_qw & $args[0]- называют ссылкой на шаблон? Ведь & $args[0]- это ссылка на первый параметр. Что же здесь является шаблоном?
 

Romantik

TeaM PHPClub
подредактировал что бы был виден нормально код

-~{}~ 15.07.06 15:13:

все завивсит от правил абстракции которые используют данные функции. ИМХО код не полный и нечего сказать
 
Сверху