美文网首页
is_callable()函数和method_exists()

is_callable()函数和method_exists()

作者: 互联网职场进阶 | 来源:发表于2017-07-15 11:19 被阅读0次

    检测参数是否为合法的可调

    <?php
    class a{
        function one($obj,$fun)
        {
            if(is_callable(array($obj,$fun)))
            {
                echo 'yes';
            }else{
            echo 'no';
            }
        }
        function two($obj,$fun){
            if(method_exists($obj,$fun)){
                echo 'yes';
            }else{
                echo 'no';
            }
        }
    }
    class b{
        function two(){
            return 123;
        }
    }
    $a = new a();
    $request = $a->one('b','two');//b类中有two方法,输出yes
    $request = $a->one('b','');//b类中有two方法,输出no
    $request = $a->two('b','two');//b类中有two方法,输出yes
    $request = $a->two('b','');//b类中有two方法,输出no
    

    php函数method_exists()与is_callable()的区别在于在php5中,一个方法存在并不意味着它就可以被调用。对于 private,protected和public类型的方法,method_exits()会返回true,但是is_callable()会检查存在其是否可以访问,如果是private,protected类型的,它会返回false。

    相关文章

      网友评论

          本文标题:is_callable()函数和method_exists()

          本文链接:https://www.haomeiwen.com/subject/vfvahxtx.html