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。