is_callable()函数和method_exists()

2017-07-15  本文已影响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。

上一篇下一篇

猜你喜欢

热点阅读