is_callable — 驗證變數的內容是否能夠進行函數調用
Descriptionbool
is_callable ( callback $name [, bool $syntax_only =
false [, string &$callable_name ]] )驗證變數的內容是否能夠進行函數調用。可以用於檢查一個變數是否包含一個有效函數名稱,或者一個包含經過合適編碼的函數和成員函數名的數組。Parameters(參數)
name
既可以是一個字串類型的函數名稱,也可以是一個對象和成員函數名的組合數組,比如:array($SomeOject, 'MethodName')
syntax_only
如果設定為true,那麼只是驗證name是一個函數或者方法,函數僅僅會拒絕不是字串,亦或是結構不合法的數組作為回呼函數。合法結構是指一個包含兩個成員的數組,第一個是對象或者字串,第二個是一個字串。
callable_name
接收“調用名稱”,在下面的例子裡它是“someClass::someMethod"。請注意儘管someClass::someMethod()是一個可調用的靜態方法,但是這裡並不是真的表示一個靜態方法
Return Values(傳回值)
如果可調用返回true,否則返回false。
Examples
Example #1 is_callable() example
<?php
// How to check a variable to see if it can be called
// as a function.//
// Simple variable containing a function
//
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
?>
參考:I haven't seen anyone note this before, but is_callable will correctly determine the existence of methods made with __call. The
method_exists function will not.
is_callable判斷是回去調用__call魔術方法來判斷,而method_exists不會