关于is_callable用法心得

今天在看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可以检测该方法是否可以直接调用

 

 

 

posted @ 2012-10-10 10:53  tywei  阅读(397)  评论(0编辑  收藏  举报