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开发直播功能的详细教程。

    随着网络技术的不断发展,直播功能正在变得越来越流行。在这样一个背景下,越来越多的开发者正在使用PHP语言开发直播功能,以满足市场需求。本篇文章将针对如何使用PHP语言开发直播功能,提供一个详细的教程,帮助…

    2023年5月30日
    043
  • PHP入门指南:观察者模式。

    在现代软件开发中,设计模式是一种被广泛使用的概念。设计模式是存在于软件系统中的通用解决方案,它们经过测试和证明,可以帮助开发人员更高效地构建复杂的软件应用程序。观察者模式是其中一个很常见的设计模式,…

    2023年5月22日
    00
  • (安全篇)PHP四大安全策

    一、文件系统安全 php如果具有root权限,且在脚本中允许用户删除文件,那么用户提交数据,不进行过滤,就非常有可能删除系统文件 <!--?php // 从用户目录中删除指定的文件 $username = $_POST['user_submitted_n…

    2016年10月17日
    0364
  • php+redis实现商城秒杀功能案例(附代码)

    这篇文章主要为大家详细介绍了php+redis实现商城秒杀功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1、安装redis,根据自己的php版本安装对应的redis扩展(此步骤简单的描述一下) 1.1.安装php_igbinary…

    2018年2月26日 PHP案例操作
    0315
  • PHP8函数:get_debug_type()的用途详解。

    PHP8是PHP语言的最新版本。这个版本新增了很多强大的功能和改进,在解释器性能、类型系统和错误处理方面有很多进展。其中一个非常实用的新功能是get_debug_type()函数。它可以方便地获取表达式的类型信息,这个函数…

    2023年5月21日
    01
  • 如何在PHP中实现大数据分析。

    随着互联网和信息技术的发展,数据已经成为了企业和组织重要的生产资源。而如何进行有效的数据分析已经成为企业决策的重要课题。PHP语言作为一种广泛使用的Web编程语言,也可以用来实现大数据分析。本文将介绍如何…

    2023年5月22日
    016
  • PHP与数据备份的集成。

    当今互联网应用越来越成熟,各种业务处理都需要用到数据库来保存数据。而随着数据量不断增加,数据备份变得愈发重要。在PHP应用程序中,数据备份是必须考虑的问题之一,因此PHP与数据备份的集成也变得至关重要。首…

    2023年5月21日
    00
  • php4中的文件操作

    resource fopen ( string filename, string mode ) 打开某个文件,返回指向这个文件的资源 string filename:要被打开的文件 string mode:打开模式   Mode      说明 "r"    只读方式打开,将文件指针指向文…

    2017年11月14日
    0198

联系我们

QQ:951076433

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