php – 在调用call_user_func()之前检查函数是否存在于类中

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 在调用call_user_func()之前检查函数是否存在于类中脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在下面的代码中,我使用call_user_func()调用一个类.
if(file_exists('controller/' . $this->controller . '.controller.PHP')) {
    require('controller/' . $this->controller . '.controller.PHP');
    call_user_func(array($this->controller,$this->view));
} else {
    echo 'error: controller not exists <br/>'. 'controller/' . $this->controller . '.controller.PHP';
}

让我们说控制器有如下代码.

class test {

    static function test_function() {
        echo 'test';
    }

}

当我调用call_user_func(‘test’,’test_function’)没有问题.但是当我调用一个不存在的函数时,它不起作用.现在我先检查te类测试中的函数是否存在,然后再调用函数call_user_func.

有没有一个函数来检查一个类是否存在一个函数,还有另外一个方法可以检查这个?

你正在寻找 method_exists的初学者.但是,您应该检查什么也不是方法是可调用的.这是由有名的 is_callable功能完成的:
if (method_exists($this->controller,$this->view)
    && is_callable(array($this->controller,$this->view)))
{
    call_user_func(
        array($this->controller,$this->view)
    );
}

但这只是事情的开始.您的代码段包含明确的需求调用,这表明您没有使用autoloader.
重要的是,您所做的一切都是检查file_exists,如果该类已经加载,则不会.那么你的代码会产生一个致命的错误,如果每次机会,您的代码片段被执行两次,并且$this->控制器的值相同.
至少要把这个修改require_once

脚本宝典总结

以上是脚本宝典为你收集整理的php – 在调用call_user_func()之前检查函数是否存在于类中全部内容,希望文章能够帮你解决php – 在调用call_user_func()之前检查函数是否存在于类中所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。