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

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

声明回调函数的方法

变量函数声明

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

执行结果

PHP中的回调函数的更多相关文章

  1. PHP中的回调函数和匿名函数

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  2. 理解和使用 JavaScript 中的回调函数

    理解和使用 JavaScript 中的回调函数 标签: 回调函数指针js 2014-11-25 01:20 11506人阅读 评论(4) 收藏 举报  分类: JavaScript(4)    目录( ...

  3. js中的回调函数的理解和使用方法

    js中的回调函数的理解和使用方法 一. 回调函数的作用 js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数. 二. 回调函数的解释 因为 ...

  4. [转]理解与使用Javascript中的回调函数

    在Javascript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用.既然函数实际上是对象:它们能被“存储”在变量中,能作为函数参数被传递,能在函数中被创建,能从函数中返回. 因 ...

  5. 【JavaScript】理解与使用Javascript中的回调函数

    在Javascript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用.既然函数实际上是对象:它们能被“存储”在变量中,能作为函数参数被传递,能在函数中被创建,能从函数中返回. 因 ...

  6. C中的回调函数

    C语言中应用回调函数的地方非常多,如Nginx中: struct ngx_command_s { ngx_str_t name; ngx_uint_t type; char *(*set)(ngx_c ...

  7. Java中的回调函数学习

    Java中的回调函数学习 博客分类: J2SE JavaJ#  一般来说分为以下几步: 声明回调函数的统一接口interface A,包含方法callback(); 在调用类caller内将该接口设置 ...

  8. 转: jquery中ajax回调函数使用this

    原文地址:jquery中ajax回调函数使用this 写ajax请求的时候success中代码老是不能正常执行,找了半天原因.代码如下 $.ajax({type: 'GET', url: " ...

  9. 理解javascript中的回调函数(callback)【转】

    在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实 ...

  10. JavaScript 中的回调函数

    原文:http://javascriptissexy.com/ 翻译:http://blog.csdn.net/luoweifu/article/details/41466537 [建议阅读原文,以下 ...

随机推荐

  1. Hook lua库函数时遇到的问题

    最近在为distri.lua实现一个lua调试系统,有一个简单的需求,lua导入一个文件的时候,将这个文件的文件名记录下来, 以方便调试器在设置断点的时候判断是否一个合法的文件. lua导入文件是通过 ...

  2. C#自定义Winform无边框窗体

    C#自定义Winform无边框窗体 在实际项目中,WinForm窗体或者控件不能满足要求,所以就需要自己设计窗体等,当然设计界面可以用的东西很多,例如WPF.或者一些第三方的库等.本例中将采用WinF ...

  3. 【BZOJ5210】最大连通子块和 树剖线段树+动态DP

    [BZOJ5210]最大连通子块和 Description 给出一棵n个点.以1为根的有根树,点有点权.要求支持如下两种操作: M x y:将点x的点权改为y: Q x:求以x为根的子树的最大连通子块 ...

  4. 10.16 正式开发stark组件(一)

    2018-10-16 17:26:44 Django MTV  路由配置里面有 反向解析 参考连接:https://www.cnblogs.com/yuanchenqi/articles/762993 ...

  5. day_6.10 tcp三次握手 四次挥手

    tcp和udp对比   tcp比udp稳定 断开连接的四次挥手

  6. 一、在windows环境下修改pip镜像源的方法(以python3为例)

    在windows环境下修改pip镜像源的方法(以python3为例) 1.在windows文件管理器中,输入 %APPDATA% 2.会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文 ...

  7. vuex 的基本使用之Module

    Module 首先介绍下基本的组件化规则:你可以根据项目组件的划分来拆分 store,每个模块里管理着当前组件的状态以及行为,最后将这些模块在根 store 进行组合. const moduleA = ...

  8. [daily][centos][sudo] sudo 报错

    有时候, 比如在CentOS 6上. sudo 会报如下错误: sudo: must be setuid root 这是因为, sudo 命令, 没有SUID, [root@T209 ~]# ll / ...

  9. [adminitrative][archlinux][setfont] 设置console的字体大小

    电脑的分辨率高了之后,用命令行进入的时候,完全看不清楚,是否容易导致眼瞎. 第一步便把字体调大就成了很必要的操作. 使用一个命令能马上生效: setfont 使用配置文件 /etc/vconsole. ...

  10. 关于服务器时区BEIST-8、GMT-8、Asia/Shanghai、CST、GMT+8:00等缩写的含义

    http://www.talkwithtrend.com/Article/147961 AIX系统时区总结 字数 2078阅读 5844评论 0赞 0 前几天NTP的问题牵涉出时区问题,大家可能被眼花 ...