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");
?>
执行结果

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函数(五)-回调函数的更多相关文章
- php变量函数,回调函数
一,变量可以直接传递函数 <?php function demo($num , $n )//$n是个函数 { for($i=0;$i<$num;++$i) { if($n($i)) { e ...
- C++中类成员函数作为回调函数
注:与tr1::function对象结合使用,能获得更好的效果,详情见http://blog.csdn.net/this_capslock/article/details/38564719 回调函数是 ...
- Go基础系列:函数(2)——回调函数和闭包
回调函数和闭包 当函数具备以下两种特性的时候,就可以称之为高阶函数(high order functions): 函数可以作为另一个函数的参数(典型用法是回调函数) 函数可以返回另一个函数,即让另一个 ...
- C++中 线程函数为静态函数 及 类成员函数作为回调函数
线程函数为静态函数: 线程控制函数和是不是静态函数没关系,静态函数是在构造中分配的地址空间,只有在析构时才释放也就是全局的东西,不管线程是否运行,静态函数的地址是不变的,并不在线程堆栈中static只 ...
- php自定义函数之回调函数
回调函数,可以配合匿名函数和变量函数实现更加优美.复杂的一种函数结构.大理石平台价格 回调函数,就是在处理一个功能的时候,我让让这个功能自定义能力再强一些,我准许调用这个函数的时候,还可以传入一个函数 ...
- 【知识点】inline函数、回调函数、普通函数
目录 一.inline内联函数 1.1 使用 1.2 编译器对 inline 函数处理步骤 1.3 优缺点 1.3.1 优点 1.3.2 慎用内联 1.3.3 不宜使用内联 1.4 虚函数(virtu ...
- windows API普通函数跟回调函数有何区别
通俗点讲:1.普通函数(假设我们都是函数)你卖电脑,我买电脑,我给你钱(调用你)后,你给我电脑(得到返回值).这种情况下,我给钱后就不能走开,必须等你把电脑给我,否则你交货的时候可能找不到人.2.回调 ...
- 使用匿名函数在回调函数中正确访问JS循环变量
有时候, 需要以不同的参数调用某个URL,并且在回调函数中仍然可以访问正在使用的参数, 这时候, 需要使用闭包保存当前参数, 否则, 当回调函数执行时, 之前的参数很可能早已被修改为最后一个参数了. ...
- 上传图片的回调函数,callback作为一个函数针对回调函数
Tool.ImageUpload = function (selector, callback) { /// <summary>图片上传</summary> /// <p ...
随机推荐
- Luogu-4248 [AHOI2013]差异
\(\sum_{i<j}len(i)+len(j)\)比较简单,稍微想想就出来了,问题在于怎么求任意两个后缀的\(lcp\)长度之和 因为求\(lcp\)实际上就是一个对\(h\)数组求区间最小 ...
- 【P2514】工厂选址(贪心)
看到题了不首先应该看看数据范围确定一下算法么,这个题的数据范围大约可以支持到O(nmlogm),所以肯定不是搜索什么的,DP貌似至少也要n^2m,所以可以想一些其他的.对于题目的输入,我们发现这些输入 ...
- QT 文本html显示格式的问题,如在QTextBrowser.setText用tr(),其中为html格式
QObject::tr("<h1><font color = green>%1</font>的人品指数:<font color = orange&g ...
- linux命令:rm 命令
昨天学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令.rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所 ...
- java实现二进制的加法
先看打印结果在看代码比较好理解.结果在最下面的位置. 总结:讲解了二进制的按位异域.按位与.左移的运算规则.并通过次3种算法得到2个数相加的结果.二进制应该还有其他算法,由于知识浅薄就不知道了. 代码 ...
- IDEA运行debug为灰色无法运行
这种情况一般在使用他人项目的时候产生. 检查几个问题,本地环境是否配置好 然后进入项目的入口右键运行是否可以正常运行 如果不可以,就在 修改一下src文件 一般就可以正常使用了
- Linux系统用户/用户组/文件权限相关
目录一.Linux系统用户/用户组权限相关二.Linux系统文件权限相关 一.Linux系统用户/用户组权限相关 .命令:usermod 用法:usermod [-agGus] user args ‘ ...
- mysql备份shell脚步
#!/bin/bash #Shell Command For Backup MySQL Database Everyday Automatically By Crontab USER=roo ...
- vue 全选与取消全选
所用知识点 1 v-model:监听input内容 2 watch:监听属性方法 参考https://cn.vuejs.org/v2/api/#watch 3 页面初始化调用函数 mounted 一: ...
- Django 基础 模板系统
Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {% %} 'b', 'c', 'd']的话,就显示4. filesizeformat 将值格式化为一个 “人类可读的” 文件尺寸 ( ...