檢測參數(shù)是否為合法的可調(diào)
<?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函數(shù)method_exists()與is_callable()的區(qū)別在于在php5中猾骡,一個(gè)方法存在并不意味著它就可以被調(diào)用旧困。對(duì)于 private,protected和public類型的方法循捺,method_exits()會(huì)返回true斩例,但是is_callable()會(huì)檢查存在其是否可以訪問,如果是private从橘,protected類型的念赶,它會(huì)返回false。