• 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(对象引用,"对象中方法名"))

    执行结果

  • 相关阅读:
    redux核心知识
    react性能优化要点
    react-router4的使用备注
    selenium启动Chrome配置参数问题
    Navicat15最新版本破解和破解报错总结
    Silence主题美化-部署
    vscode打开文件,中文显示乱码(已解决)
    Windows下Charles从下载安装到证书设置和浏览器抓包
    python下的selenium和chrome driver的安装
    Python 直接赋值、浅拷贝和深度拷贝解析
  • 原文地址:https://www.cnblogs.com/rxbook/p/10571230.html
Copyright © 2020-2023  润新知