function_exists每次都返回false

时间:2012-03-08 12:00:02

标签: php oop function

我正在尝试检查某个功能是否存在,但我的if

中一直是假的

我尝试调用这样的函数,其中 $ function是函数名称

if (function_exists($this->module->$function))
{
    $this->module->$function($vars);
}
else
{
    echo 'no';
}

变量module被定义为应该调用函数的类:

$this->module = $module;
$this->module = new $this -> module;

我在这里遗漏了什么吗? 谢谢!

5 个答案:

答案 0 :(得分:4)

可以搞清楚: 使用method_exists()解决了我的问题

method_exists($this->module,$function)

我自己为可能遇到同样问题的人回答了这个问题!

答案 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);
祝你好运!