我正在尝试检查某个功能是否存在,但我的if
中一直是假的我尝试调用这样的函数,其中 $ function是函数名称:
if (function_exists($this->module->$function))
{
$this->module->$function($vars);
}
else
{
echo 'no';
}
变量module
被定义为应该调用函数的类:
$this->module = $module;
$this->module = new $this -> module;
我在这里遗漏了什么吗? 谢谢!
答案 0 :(得分:4)
答案 1 :(得分:3)
您需要使用method_exists()
:
if (method_exists($this->module, $function)) {
// do stuff
}
答案 2 :(得分:2)
您需要检查方法是否存在而不是函数:
if (method_exists($this->module, $function))
{
$this->module->$function($vars);
}
else
{
echo 'no';
}
查看文档:{{3}}
答案 3 :(得分:2)
function_exists
将函数的名称作为字符串,并且没有类层次结构的概念。
如果$function
是函数的名称,只需使用以下代码:
if(function_exists($function)) {
// Call $function().
}
但是,查看代码看起来更像是要检测对象的方法是否存在。
method_exists
有两个参数,1:要测试的对象,2:要检测的方法的名称。
if(method_exists($this->module, $function)) {
$this->module->$function($vars);
}
答案 4 :(得分:2)
function_exists()期望String作为参数。这样就可以了:
method_exists($this->module, $function);
祝你好运!