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

    执行结果

  • 相关阅读:
    Shell脚本编程基础之程序
    从入门到放弃
    Shell编写的俄罗斯方块游戏(亲测可用)
    Qt开发环境搭建
    day01
    day01
    浅析STM32内部FLASH读写
    基于STM32 的485通讯实验(f103)
    八、Servlet的常见错误总结:
    七、Servlet介绍
  • 原文地址:https://www.cnblogs.com/rxbook/p/10571230.html
Copyright © 2020-2023  润新知