美文网首页
php is_callable的用法以及和function_ex

php is_callable的用法以及和function_ex

作者: changxiaonan | 来源:发表于2017-09-20 22:31 被阅读0次

    is_callable

    (PHP 4 >= 4.0.6, PHP 5)

    is_callable— 验证变量的内容是否能够进行函数调用

    Description(描述)

    boolis_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(例子)

    <?php

    functionsomeFunction()

    {

    }

    $functionVariable = 'someFunction';

    var_dump( is_callable($functionVariable, false, $callable_name) );//    输出为:bool(true)

    echo $callable_name, "\n";            //    输出为: someFunction

    class someClass {

            functionsomeMethod()   {

             }

    }

    $anObject = new  someClass();

    $methodVariable = array($anObject, 'someMethod');

    var_dump( is_callable($methodVariable, true, $callable_name) );//  输出为:bool(true)

    echo $callable_name."\n";                //    输出为:someClass::someMethod

    ?>

    区别:

    function_exists 比较简单点,就是判断函数有没有被定义。

    method_exists 是判断类内的方法存不存在。

    is_callable 检测参数是否为合法的可调用结构。

    它们的返回值 都是 bool,但是参数不同。

    function_exists只有一个参数:函数名 $string

    method_exists两个参数 :$object 类对象或$class类名称,$string 方法名

    is_callable三个参数:$varmixed 可以是(string或者array) ,$syntax_only(bool),$callback_name(string)

    如果is_callable的第一个参数是string,那么 和function_exists 相似 ;如果是数组则和 method_exists相似,但又有不同:

    (1)method_exists不会考虑类方法的定义范围public 、protected 、private,只要存在就返回true;而 is_callable 会在方法是被 protecte、 private时返回false。

    (2)is_callable会去调用__call魔术方法来判断,而method_exists不会。

    相关文章

      网友评论

          本文标题:php is_callable的用法以及和function_ex

          本文链接:https://www.haomeiwen.com/subject/osdasxtx.html