zoukankan      html  css  js  c++  java
  • PHP中的回调函数

    回调函数是指调用函数的时候将另一个函数作为参数传递到调用的函数中,而不是传递一个普通的变量作为参数

    使用回调函数是为了可以将一段自己定义的功能传到函数内部使用

    声明回调函数的方法

    变量函数声明

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
        function Calculate($num){
            for($i=0;$i<=10;$i++){
                if($num($i)){
                    continue;
                }
                echo $i."nbsp";
            }
        }
         
        function Number_1($a){
            return $a%2 == 0; //打印不能被2整除的数
        }
         
        function Number_2($b){
            return $b >=6; //打印小于6的数
        }
         
        Calculate("Number_1");
        echo "<br>";
        Calculate("Number_2");
    ?>

     执行结果

    call_user_func_array()函数

    该函数需要两个参数。

    第一个参数是要调用的函数名,第二个参数是数组类型,为参数列表。

    参数列表的参数个数要和要调用的函数的参数个数相同

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
        function Speak($a,$b){
            echo "He can speak ".$a;
            echo "<br>";
            echo "She can speak ".$b;
        }
         
        function Speak_Test(){
            return call_user_func_array('Speak',array('Chinese','English'));   
        }
         
        Speak_Test()
    ?>

     执行结果

    类静态函数和对象

    该方法回调函数也需要用到call_user_func_array()函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
     
        class Speaking{
            static function Speak($a,$b){
                echo "He can speak ".$a;
                echo "<br>";
                echo "She can speak ".$b;
                echo "<br>";
            }
        }
         
        class Writting{
            function Write($a,$b){
                echo "He can write ".$a;
                echo "<br>";
                echo "She can write ".$b;
            }
        }
         
        call_user_func_array(array("Speaking","Speak"),array("Chinese","English"));
        call_user_func_array(array(new Writting(),'Write'),array("German","Portuguese"));
    ?>

     类中的方法为静态,回调方法为

    call_user_func_array(array("类名","类中的静态方法"))

    类中的方法不为静态,回调方法为

    call_user_func_array(array(对象引用,"对象中方法名"))

    执行结果

  • 相关阅读:
    优酷kux转mp4
    C++实现将一个文件夹内容拷贝至另一个文件夹
    获取NX一组属性
    获取NX特征名称(无时间戳)
    利用glog打印日志
    C++获取运行程序当前目录
    获取NX装配结构信息
    解析形如(k,v)(k,v)(k,v)字符串
    多NX如何共存
    C++ (C#)实现获取NX PART预览图
  • 原文地址:https://www.cnblogs.com/rxbook/p/10571230.html
Copyright © 2011-2022 走看看