PHP回调函数以及匿名函数用法与概念详解(基础篇)

1、回调函数

PHP的回调函数其实和C、Java等语言的回调函数的作用是一模一样的,都是在主线程执行的过程中,突然跳去执行设置的回调函数;回调函数执行完毕之后,再回到主线程处理接下来的流程而在php调用回调函数,不像c以及java那样直接使用函数名作为函数参数,而是在php中使用函数对应的字符串名称执行

1.1、无参数回调

';
}
function main($callback){
  echo 'execute main start.
'; $callback(); echo 'execute main end.
'; } main('callback'); //结果 ecute main start. execute no parameters callback. execute main end.

 

1.2、全局回调函数

$b.
"; } $func = 'callback'; call_user_func($func, 1,2); call_user_func_array($func, array(1,2)); //结果 1<====>2. 1<====>2.

1.3、类方法及静态方法回调

$b.
"; } public static function staticCallback($a,$b){ echo "staticCallback $a<====>$b.
"; } } //非静态方法调用方式一 $test = new Test(); call_user_func(array($test, 'callback'), 1,2); call_user_func_array(array($test, 'callback'), array(1,2)); //非静态方法调用方式二 $func = 'callback'; $test->$func(7,9); //静态方法调用方式 call_user_func(array('Test', 'staticCallback'), 4,6); call_user_func_array(array('Test', 'staticCallback'), array(4,6)); call_user_func_array("Test::staticCallback", array(4,6)); //结果 callback 1<====>2. callback 1<====>2. callback 7<====>9. staticCallback 4<====>6. staticCallback 4<====>6. staticCallback 4<====>6.

2、匿名函数
2.1、 php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数。最常用的就是回调函数的参数值

';
};
$closureFunc("hello world!");
//结果
hello world!

2.2、闭包
2.2.1、传入参数,引用局部变量

";
  };
  $func(23);
};
$func = $closureFunc("lvfk");
//结果
lvfk--男--23

2.2.2、返回闭包函数

";
  $func = function()use ($name,$sex){
    echo "$name--$sex
"; }; return $func; }; $func = $closureFunc("lvfk"); $func(); $func(); //结果 closureFunc lvfk+++男 lvfk--男 lvfk--男

2.2.3、闭包改变上下文的值,需要引用传递

";
  $func = function()use ($name,&$age){
    $age++;
    echo "$name--$age
"; }; return $func; }; $func = $closureFunc("lvfk"); $func(); $func(); $func(); //结果 lvfk+++1 lvfk--2 lvfk--3 lvfk--4

以上就是对闭包的简单应用,通过闭包,可以看出在函数外面使用闭包,传入闭包的参数内容,实际上可以是上下文对象内容,也可以在闭包内更改上下文对象值,但必须是引用传递

本文来自投稿,不代表科技代码立场,如若转载,请注明出处https://www.cwhello.com/9838.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
上一篇 2018年8月29日 10:11
下一篇 2018年8月30日 15:47

相关推荐

  • 示例php+mysql查询实现无限下级分类树输出

    本文实例讲述了php+mysql查询实现无限下级分类树输出。分享给大家供大家参考,具体如下:这里介绍的php结合mysql查询无限下级树输出,其实就是无限分类。给各位整理了几个php无限分类的例子.【

    2022年6月17日
    0173
  • PHP与数据库容器的集成。

    随着云计算技术的发展,越来越多的企业开始将应用部署到容器环境中,从而实现了程序的快速交付和部署。PHP作为一种常用的Web开发语言,也在这一趋势下与数据库容器进行集成,为企业带来了更快速和可靠的应用开发...

    2023年5月21日
    00
  • PHP调用鼎信短信接口实现批量短信发送。

    随着科技的发展和人们的生活水平的不断提高,短信已经成为人们生活、工作中必不可少的的一种沟通方式。无论是商家推广活动,还是企业员工相互之间的通讯,都不可避免地需要用到短信。所以,如何使用短信接口来实...

    2023年5月23日
    01
  • php获取一些时间实现方法(附代码)

    这几天在开发的时候遇到的一些时间上的问题,整理了一下,分享给大家,可以看看,有需要的话可以利用一下。 1.获取上个月第一天及最后一天. echo date('Y-m-01', strtotime('-1 month')); echo "<br/>"; ec...

    2018年4月25日
    0181
  • Redis中的布隆过滤器和PHP的使用方法。

    Redis是一个开源的内存数据库,被广泛应用于缓存、消息队列、分布式锁等场景。其中,布隆过滤器是一种高效的数据结构,可以用于判断一个元素是否存在于一个集合中,在Redis中得到了广泛的应用。本文将介绍Redis中...

    2023年5月21日
    00
  • PHP递归思想说明

    说明:在一个函数内部再次有条件调用自己(当前函数),这个时候就称为“递归调用”,即自己调用自己。 代码 图解 注意: 递归调用必须有一个可以退出的条件,否则无法退出递归调用,就会成死归,也就是说必须逐渐的...

    2018年4月7日
    0190
  • PHP入门指南:PHP和Hive。

    PHP是一种广泛使用的服务器端编程语言,它的使用范围覆盖了几乎所有行业。在本篇文章中,我们将探讨PHP对于大数据处理的特殊作用。在特定环境下,PHP可以与Apache Hive协作,从而实现实时数据处理和分析。先来介...

    2023年5月23日
    04
  • php如何使用PHP的Tokenizer扩展。

    PHP是一种流行的服务器端脚本语言,因其易用性和灵活性而备受欢迎。PHP的Tokenizer扩展是一种强大的工具,它允许你将PHP代码分解为令牌,以便进行语法分析和其他操作。在本文中,我们将介绍如何使用PHP的Tokenize...

    2023年6月3日
    06

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息