php, ограничивающий вызов функции определенным классом
У меня есть класс с именем db.php .....и у меня в нем есть следующий метод.
function query($sql){
return mysql_query($sql);
}
Я хочу, чтобы только этот класс мог использовать
Запрос Mysql_
Но другие не могут. А другие могут использовать только вызов
$db->запрос
Функция этого класса.
Возможно ли это? Любая помощь будет очень признательна!
2 answers
Я почти уверен, что этого можно достичь косвенным путем. Вы можете переименовать функцию, а затем вызвать ее снова, если хотите:
rename_function('mysql_query', 'mysql_query_old' );
function mysql_query(){
//do whatever
//pass the call to original method if needed.
$args = func_get_args();
if (count($args) === 2)
return mysql_query_old($args[0], $args[1]);
else
return mysql_query_old($args[0]);
}
Чтобы ограничить его только определенным классом, вы можете просто проверить вызывающий класс:
$trace = debug_backtrace()[1];
$class = $trace['class'];
Посмотрите здесь и здесь для получения дополнительной информации:
Насколько я знаю, отключение функций в PHP - это настройка "все или ничего":
- Вы можете сделать так, чтобы расширение вообще не загружалось.
- Вы можете запретить функцию с помощью disable_functions, что является
PHP_INI_SYSTEM
, таким образом, общесистемной настройкой.
Я не думаю, что есть что-то настолько мелкозернистое, как вы просите. Какой бы ни была причина, по которой вам нужно написать новый код с устаревшим расширением mysql, вам придется найти другое решение.