Я пытаюсь создать очень простую абстракцию базы данных, одна часть которой использует подготовленные запросы.
Теперь у меня есть функция, принимающая строку запроса и массив значений, подобных этому:
$query = "SELECT `first_name`, `last_name` FROM ::table_name WHERE `id` = :id"
$values = array(
'table_name' = $this->table_name,
'id' = $user_id,
);
это создаст запрос, подобный этому:
SELECT `first_name`, `last_name` FROM `sometablename` WHERE `id` = '1234'
Моя проблема заключается в следующем:
Я использую preg_replace_callback
для извлечения :: идентификаторов и: идентификаторов из строки запроса, а затем отправляю их в функцию очистки. Проблема в том, что мне также нужно отправить массив значений, чтобы функция могла взять совпадение из регулярного выражения, получить элемент в массиве значений с этим ключом, экранировать значение, обернуть его в правильные кавычки и затем вернуть его .
Но я не могу передать дополнительную информацию в обратный вызов. Я мог бы использовать приватную статическую переменную, но это очень хакер .
Какой еще подход к этому?