php回调函数和普通调用区别,初学 PHP 对于回调函数的一些理解

一.匿名函数(闭包函数)

谈到回调函数,不得不提匿名函数;匿名函数,也叫闭包函数,也就是没有名字的函数,它可以单独存在,也可以将其赋值给某一个变量.

创建一个匿名函数或者叫做闭包函数的时候,要注意最后要加上分号,因为这是一条语句,并不是一个代码块;而平时创建一个普通函数,在最后不需要加分号,因为创建普通函数的结构是一个代码块.可是下面的代码看起来就像是一个代码块,实际上并不是(这是为啥呢?).

下面创建一个匿名函数.

function ($m, $n) {

return $m + $n;

};

下面创建一个匿名函数,并赋值给某一个变量.

$add = function ($m, $n) {

return $m + $n;

};

二.回调函数

手册里有一个解释,一些函数如 call_user_func() 或 usort() 可以接受用户自定义的回调函数作为参数.回调函数不止可以是简单函数,还可以是对象的方法,包括静态类方法.

我所理解的是如果函数A调用函数B,此时函数B就扮演了回调函数的角色;反之,函数A扮演回调函数的角色.

回调函数可以由普通函数来扮演,也可以由上文提到的匿名函数来扮演.

普通函数扮演回调函数

在下面的代码中,将自定义的普通函数 add() 以字符串的形式作为普通函数 arithmetic() 的参数传入,那么此时自定义的 add() 函数就扮演了回调函数的角色.

function arithmetic($functionName, $m, $n) {

return $functionName($m, $n);

}

function add($m,$n){

return $m+$n;

};

$result = arithmetic("add",4,6);

echo $result;//输出 10

匿名函数扮演回调函数的一种方式

在下面的代码中,将自定义的匿名函数直接以引用传递的方式作为普通函数 arithmetic() 的参数传入,那么此时,自定义的这个匿名函数就扮演了匿名函数的角色.

function arithmetic($arithmetic, $m, $n) {

return $arithmetic($m, $n);

}

$result = arithmetic(function ($m, $n) {

return $m + $n;

}, 4, 6);

echo $result;//输出 10

匿名函数扮演回调函数的另一种方式

在下面的代码中,将自定义的匿名函数赋值给 $arithmetic ,然后将 $arithmetic 以引用传递的方式作为普通函数 arithmetic() 的参数传入,那么此时,自定义的这个匿名函数就扮演了匿名函数的角色.

function arithmetic($arithmetic, $m, $n) {

return $arithmetic($m, $n);

}

$arithmetic = function ($m,$n){

return $m+$n;

};

$result = arithmetic($arithmetic,4,6);

echo $result;//输出 10

本作品采用《CC 协议》,转载必须注明作者和本文链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值