PHP的is_callable用於檢測一個函數或者一個類的方法是否可執行,用官方文檔的話說就是檢測參數是否為合法的可調用結構,程式碼範例如下。
class A{ public function __construct(){ echo 'Class:'.get_called_class(); } public function cc(){ $a = 3; return $a; }} $a = new A; $test = is_callable(array('A','cc'));var_dump($test);exit;列印結果:Class:Aboolean true
官方樣本:
function someFunction() {} $functionVariable = 'someFunction'; var_dump(is_callable($functionVariable, false, $callable_name)); // bool(true) echo $callable_name, "\n"; // someFunction //// Array containing a method// class someClass { function someMethod() { } } $anObject = new someClass(); $methodVariable = array($anObject, 'someMethod'); var_dump(is_callable($methodVariable, true, $callable_name)); // bool(true) echo $callable_name, "\n"; // someClass::someMethod
官方樣本分別是一個檢測函數,和一個檢測類的方法,以及更具體的用法。
例子
示範代碼如下:
<?phpclass test { static function a() { return "test"; }}class abc { public function a($Object,$funcName){ if (!is_callable(array($Object,$funcName))){//此處array($object,$funcname)的用法,相當於$object::$funcname調用$object的$funcname方法 echo("Error"); }else { echo("OK"); } }} $abc=new abc();$abc->a("test","aa");//test類下沒有aa方法,會輸出error$abc->a("test","a");//test類下有a方法,會輸出ok?>
OK ,這個函數的用法