zoukankan      html  css  js  c++  java
  • 关于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可以检测该方法是否可以直接调用

     

     

  • 相关阅读:
    深(爆)搜专题整理
    牛客CSP-S提高组赛前集训营1 T2:乃爱与城市拥挤程度
    [BZOJ3743][Coci2015]Kamp 题解
    CSP2019-S,J初赛游记
    指针复习
    二叉树复习
    最短路复习
    数据库关联查询与模型之间的关联
    数据库操作Flask-SQLAlchemy之模型声明及数据库表的生成与删除
    csrf攻击防范
  • 原文地址:https://www.cnblogs.com/tywei/p/2717949.html
Copyright © 2011-2022 走看看