PHP函数(五)-回调函数

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

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

声明回调函数的方法
变量函数声明

<?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");
?>
<?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 "
"; Calculate("Number_2"); ?>

执行结果

call_user_func_array()函数

该函数需要两个参数。

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

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

<?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()
?>
<?php function Speak($a,$b){ echo "He can speak ".$a; echo "
"; echo "She can speak ".$b; } function Speak_Test(){ return call_user_func_array('Speak',array('Chinese','English')); } Speak_Test() ?>

执行结果

类静态函数和对象

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

<?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"));
?>
<?php class Speaking{ static function Speak($a,$b){ echo "He can speak ".$a; echo "
"; echo "She can speak ".$b; echo "
"; } } class Writting{ function Write($a,$b){ echo "He can write ".$a; echo "
"; 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(对象引用,“对象中方法名”))

执行结果
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值