今天在看YII的时候看到里面使用了is_callable()函数查了下手册,里面就写了一条:检测参数是否为合法的可调用结构,看的我是云里雾里,谁让我是乡下人呢。。baidu,google了 一下。。才发现,这个函数的使用方法:YII里具体使用是这样:is_callable($handler,true);其实就是说检测这个变量语法是否是一个合法的函数名,不检测函数是否存在
is_callable函数共有三个参数:
参数说明
name
既可以是一个字符串类型的函数名称,也可以是一个对象和成员函数名的组合数组,比如:array($SomeOject, 'MethodName')
syntax_only
如果设置为true,那么只是验证name是一个函数或者方法,函数仅仅会拒绝不是字符串,亦或是结构不合法的数组作为回调函数。合法结构是指一个包含两个成员的数组,第一个是对象或者字符串,第二个是一个字符串。
callable_name
接收“调用名称”,在下面的例子里它是“someClass::someMethod"。请注意尽管someClass::someMethod()是一个可调用的静态方法,但是这里并不是真的表示一个静态方法
好了,上面参数是从百度百科里扒下来的,,先上几个例子吧:
例1.
function test(){ return 'test'; } echo is_callable('test', true); //true
echo is_callable('demo', true); //true
echo is_callable('demo'); //false
例2(class):
class Test{ public function pc(){ } private function pe(){ } protected function pd(){ } } $a = new Test(); echo is_callable(array($a, 'pc')); //true echo is_callable(array($a, 'pe')); //false echo is_callable(array($a, 'pd')); //false
注:由上面的例子可以看出is_callable可以检测该方法是否可以直接调用