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

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

声明回调函数的方法

变量函数声明

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. web -- Navigator.vibrate(); 使设备(有振动硬件)产生有频率的振动

    MDN 文档 此方法需要用户手势. 否则,它返回false. const koa2 = require(`koa2`); const Router = require(`koa-router`); c ...

  2. Slapper帮助Dapper实现一对多

    Dapper的Query的方法提供了多个泛型重载可以帮助我们实现导航属性的查询 1对1 public class Employees4List { public int Id { get; set; ...

  3. PHP基础语法 【】【】 PHP函数

    <?php //注释语法 /* 多行注释 */ //输出语法 echo "hello"; echo "world","dhakj"; ...

  4. jenkins编辑报错Exception when publishing, exception message的解决办法

    jenkins编辑报错Exception when publishing, exception message的解决办法 查看目标主机的磁盘空间是否占满,清理磁盘空间即可

  5. CentOS7 下安装mysql历程

    一.成功他妈的经历 背景(废话不用看):自己对Linux不是很熟悉,说难听点就是门都没有么到!基于这近年大数据之类的热闹话题,自己就想学习一下!开始下的是Minimal ISO这个版本,Vbox5虚拟 ...

  6. 洛谷P1141 01迷宫【bfs】

    题目链接:https://www.luogu.org/problemnew/show/P1141 题意: 有一个填了0和1的n*n的格子,只能0走到1,1走到0 有m组询问(数据量是1e5),问某一个 ...

  7. 解决ubuntu系统“XXX is not in the sudoers file”错误

    用adduser新建的用户,当时只输入了一个用户名,没做其它操作,这样就建立了一个normal用户.在执行sudo vim hadoop-env.sh时,报“*** is not in the sud ...

  8. [No0000D7]img生成器.bat合并所有图片到html网页中

    @ECHO OFF IF EXIST %~nx0.html DEL /F /Q %~nx0.html ECHO ^<html^>^<head^>^<title^>% ...

  9. H. GSS and Simple Math Problem 高精度乘法模板

    链接:https://www.nowcoder.com/acm/contest/104/G来源:牛客网 题目描述 Given n positive integers , your task is to ...

  10. Python:多线程

    据廖雪峰老师的学习文档介绍,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix Thread,而不是模拟出来的线程. Python的标准库提供了两个模块: ...