php限制函数调用某些类

时间:2014-07-12 16:02:31

标签: php function class call restrict

我有一个名为db.php的类.....我在其中有以下方法。

function query($sql){
   return mysql_query($sql);
}

我希望只有这个班级可以使用

  

的mysql_query

但其他人不能。其他人只能通过调用

来使用
  

$ DB->查询

这个班的功能。

有可能吗? 任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:3)

我很确定这可以通过间接方式实现。您可以重命名该功能,如果需要,可以再次调用它:

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'];

查看herehere了解详情:

答案 1 :(得分:1)

据我所知,PHP中的函数禁用是一个全有或全无的设置:

  • 您可以根本不加载扩展程序。
  • 您可以使用disable_functions禁止该功能,PHP_INI_SYSTEM因此是系统范围的设置。

我不认为没有像你问的那么细腻。无论您使用遗留的mysql扩展编写新代码的原因是什么,您都必须找到另一种解决方案。