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

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

声明回调函数的方法

变量函数声明

<?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()函数

该函数需要两个参数。

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

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

<?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()函数

<?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变量函数,回调函数

    一,变量可以直接传递函数 <?php function demo($num , $n )//$n是个函数 { for($i=0;$i<$num;++$i) { if($n($i)) { e ...

  2. C++中类成员函数作为回调函数

    注:与tr1::function对象结合使用,能获得更好的效果,详情见http://blog.csdn.net/this_capslock/article/details/38564719 回调函数是 ...

  3. Go基础系列:函数(2)——回调函数和闭包

    回调函数和闭包 当函数具备以下两种特性的时候,就可以称之为高阶函数(high order functions): 函数可以作为另一个函数的参数(典型用法是回调函数) 函数可以返回另一个函数,即让另一个 ...

  4. C++中 线程函数为静态函数 及 类成员函数作为回调函数

    线程函数为静态函数: 线程控制函数和是不是静态函数没关系,静态函数是在构造中分配的地址空间,只有在析构时才释放也就是全局的东西,不管线程是否运行,静态函数的地址是不变的,并不在线程堆栈中static只 ...

  5. php自定义函数之回调函数

    回调函数,可以配合匿名函数和变量函数实现更加优美.复杂的一种函数结构.大理石平台价格 回调函数,就是在处理一个功能的时候,我让让这个功能自定义能力再强一些,我准许调用这个函数的时候,还可以传入一个函数 ...

  6. 【知识点】inline函数、回调函数、普通函数

    目录 一.inline内联函数 1.1 使用 1.2 编译器对 inline 函数处理步骤 1.3 优缺点 1.3.1 优点 1.3.2 慎用内联 1.3.3 不宜使用内联 1.4 虚函数(virtu ...

  7. windows API普通函数跟回调函数有何区别

    通俗点讲:1.普通函数(假设我们都是函数)你卖电脑,我买电脑,我给你钱(调用你)后,你给我电脑(得到返回值).这种情况下,我给钱后就不能走开,必须等你把电脑给我,否则你交货的时候可能找不到人.2.回调 ...

  8. 使用匿名函数在回调函数中正确访问JS循环变量

    有时候, 需要以不同的参数调用某个URL,并且在回调函数中仍然可以访问正在使用的参数, 这时候, 需要使用闭包保存当前参数, 否则, 当回调函数执行时, 之前的参数很可能早已被修改为最后一个参数了. ...

  9. 上传图片的回调函数,callback作为一个函数针对回调函数

    Tool.ImageUpload = function (selector, callback) { /// <summary>图片上传</summary> /// <p ...

随机推荐

  1. 泛型学习第一天:List与IList的区别 (二)

    原文: 探讨Ilist<>与List<> 首先要了解一点的是关于接口的基础知识: 接口不能直接实例化但是接口派生出来的抽象类可以实例化所有派生出来的抽象类都可以强制转换成接口的 ...

  2. URL重写技术总结

    URL重写技术总结 概要:什么是url重写? URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程.比如浏览器发来请求 hostname/101.html ,服务器自动将这个请 ...

  3. Kafka详解六:Kafka如何通过源码实现监控

    问题导读: 1.kafka的消费者组的消费偏移存储,kafka支持两个版本?        2.ConsumerOffsetChecker类的作用是什么?        3.Kafka如何通过源码实现 ...

  4. Hadoop心跳机制源码分析

    正文: 一.体系背景 首先和大家说明一下:hadoop的心跳机制的底层是通过RPC机制实现的,这篇文章我只介绍心跳实现的代码,对于底层的具体实现,大家可以参考我的另几篇博客: 1. hadoop的RP ...

  5. [转]Android:改变Activity切换方式

    overridePendingTransition(enterAnim, exitAnim); Intent intent =new Intent(this,item2.class); startAc ...

  6. QT 带有菜单项的ToolButton

    QToolBar *pToolBar = new QToolBar; QToolButton *pMenuBtn = new QToolButton; pMenuBtn->setText(tr( ...

  7. CSS3中的变形功能

    一.变形主要值得是利用transform功能来实现文字或图片的旋转,缩放,倾斜,移动这四种处理. 1.旋转-----transform:rotate(xxdeg);( IE9以上,safari 3.1 ...

  8. 使用PHP+Swoole实现的网页即时聊天工具:PHPWebIM

    使用PHP+Swoole实现的网页即时聊天工具 全异步非阻塞Server,可以同时支持数百万TCP连接在线 同时支持websocket+comet2种兼容协议,可用于所有种类的浏览器包括IE 拥有完整 ...

  9. webpack 单页面应用实战

    这篇文章将介绍如何利用 webpack 进行单页面应用的开发,算是我在实际开发中的一些心得和体会,在这里给大家做一个分享.webpack 的介绍这里就不多说了,可以直接去官网查看. 关于这个单页面应用 ...

  10. POJ1456:Supermarket(并查集版)

    浅谈并查集:https://www.cnblogs.com/AKMer/p/10360090.html 题目传送门:http://poj.org/problem?id=1456 堆作法:https:/ ...