php限制对特定类的函数调用
我有一个名为db.php的类。。。。。我有下面的方法php限制对特定类的函数调用,php,function,class,call,restrict,Php,Function,Class,Call,Restrict,我有一个名为db.php的类。。。。。我有下面的方法 function query($sql){ return mysql_query($sql); } 我希望只有这个类可以使用 mysql\u查询 但其他人不能。而其他人只能通过调用 $db->query 这个类的函数 可能吗? 任何帮助都将不胜感激 据我所知,PHP中的函数禁用是一种全有或全无设置: 您可以使扩展完全不加载 您可以使用禁用函数,这是PHP\u INI\u SYSTEM,因此是一个系统范围的设置 我不认为有什么比你要
function query($sql){
return mysql_query($sql);
}
我希望只有这个类可以使用
mysql\u查询
但其他人不能。而其他人只能通过调用
$db->query
这个类的函数
可能吗?
任何帮助都将不胜感激 据我所知,PHP中的函数禁用是一种全有或全无设置:
- 您可以使扩展完全不加载
- 您可以使用禁用函数,这是
,因此是一个系统范围的设置PHP\u INI\u SYSTEM
我不认为有什么比你要求的更精细的了。无论出于何种原因,您必须使用旧版mysql扩展编写新代码,您都必须找到另一种解决方案。据我所知,在PHP中禁用函数是一种全有或全无的设置:
- 您可以使扩展完全不加载
- 您可以使用禁用函数,这是
,因此是一个系统范围的设置PHP\u INI\u SYSTEM
我不认为有什么比你要求的更精细的了。无论出于什么原因,您必须使用遗留的mysql扩展编写新代码,您都必须找到另一种解决方案。我非常确定这可以通过间接的方式实现。如果需要,可以重命名该函数,然后再次调用它:
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'];
看一看,了解更多信息:我很确定这可以通过间接的方式实现。如果需要,可以重命名该函数,然后再次调用它:
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'];
查看并获取更多信息:1)
mysql\u query
已弃用,不应用于新代码(请改用)。2) 您不能阻止任何地方的任何类使用内置PHP函数。来自@this.lau_的完美答案非常奇怪。最有可能的解决方案是:1)mysql\u query
已被弃用,不应用于新代码(请改用)。2) 您不能阻止任何地方的任何类使用内置PHP函数。来自@this.lau_的完美答案非常奇怪。很可能有一个更有效的解决方案。如果可以在服务器上安装该PECL扩展,那么如果从系统范围的auto\u prepend\u文件
directive.interest调用,它肯定可以完成这项任务。如果可以在服务器上安装该PECL扩展,那么如果从系统范围的auto\u prepend\u文件
指令调用,它肯定可以完成这项任务。