PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > PHP教程 > 正文

    call_user_func函数和call_user_func_array函数解析

    作者:w634381967来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:今天在做练习的时候,遇到calluserfunc和 call_user_func_array的用法,因为之前一直没有用过,也不能说什么,于是看一下手册。一 简易调
    今天在做练习的时候,遇到calluserfunc和 call_user_func_array的用法,因为之前一直没有用过,

    也不能说什么,于是看一下手册。


    一.简易调用方法:
    $method="Print"; 
    $object->$method($param1,$param2);

    二.PHP函数动态调用
    1.call_user_func函数类似于一种特别的调用函数的方法,使用方法如下: 
    function a($b,$c) {
    echo $b;
    echo $c;
    }
    call_user_func('a', "111","222");
    call_user_func('a', "333","444");
    //显示 111 222 333 444
    ?>


    调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:
    class a {
    function b($c) {
       echo $c;
    }
    }
    //第一种调用方法
    //以下为类的静态调用相当于a::b("111");
    call_user_func(array("a", "b"),"111");
    //显示 111

    //第二种调用方法
    $a = new a;
    //以下调用等价于$a->b("111");
    call_user_func(array($a, "b"), "111");
    ?>

    2.call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:
    function a($b, $c) {
    echo $b;
    echo $c;
    }
    call_user_func_array('a', array("111", "222"));
    //显示 111 222
    ?>

    call_user_func_array函数也可以调用类内部的方法的
    Class ClassA {
    function bc($b, $c) {
          $bc = $b + $c;
       echo $bc;
    }
    }

    //第一种调用方法:
    //以下调用等价于ClassA::bc("111", "222");
    call_user_func_array(array('ClassA','bc'), array("111", "222"));
    //显示 333

    //第二种调用方法:
    $a = new ClassA;
    //此调用等价于$a->bc("111", "222");
    class_user_func_array(array($a, "bc"), array("111", "222"));
    ?>

    call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:
    function a(&$b) {
    $b++;
    }
    $c = 0;
    call_user_func('a', &$c);
    echo $c;//显示 1
    call_user_func_array('a', array(&$c));
    echo $c;//显示 2

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-10-10-1.html