php Ограничение вызова функции для определенного класса
У меня есть класс с именем db.php..... и у меня есть следующий метод в нем.
function query($sql){
return mysql_query($sql);
}
Я хочу, чтобы только этот класс мог использовать
mysql_query
но другие не могут. А другие могут использовать только позвонив
$ Db-> запрос
функция этого класса.
Является ли это возможным? Любая помощь будет принята с благодарностью!
2 ответа
Я уверен, что это может быть достигнуто косвенным путем. Вы можете переименовать функцию и затем вызвать ее снова, если хотите:
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, вам придется искать другое решение.