PHP闭包定义与使用简单示例


Posted in PHP onApril 13, 2018

本文实例讲述了PHP闭包定义与使用。分享给大家供大家参考,具体如下:

<?php
function getClosure($i)
{
  $i = $i.'-'.date('H:i:s');
  return function ($param) use ($i) {
    echo "--- param: $param ---\n";
    echo "--- i: $i ---\n";
  };
}
$c = getClosure(123);
$i = 456;
$c('test');
sleep(3);
$c2 = getClosure(123);
$c2('test');
$c('test');
/*
output:
--- param: test ---
--- i: 123-21:36:52 ---
--- param: test ---
--- i: 123-21:36:55 ---
--- param: test ---
--- i: 123-21:36:52 ---
*/

再来一个实例

$message = 'hello';
$example = function() use ($message){
 var_dump($message);
};
echo $example();
//输出hello
$message = 'world';
//输出hello 因为继承变量的值的时候是函数定义的时候而不是 函数被调用的时候
echo $example();
//重置为hello
$message = 'hello';
//此处传引用
$example = function() use(&$message){
 var_dump($message);
};
echo $example();
//输出hello
$message = 'world';
echo $example();
//此处输出world
//闭包函数也用于正常的传值
$message = 'hello';
$example = function ($data) use ($message){
 return "{$data},{$message}";
};
echo $example('world');
//此处输出world,hello

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP生成静态HTML速度快类库
Mar 18 PHP
php 保留字列表
Oct 04 PHP
php文本转图片自动换行的方法
Mar 13 PHP
linux命令之调试工具strace的深入分析
Jun 03 PHP
PHP遍历数组的三种方法及效率对比分析
Feb 12 PHP
php实现的一个简单json rpc框架实例
Mar 30 PHP
php简单统计字符串单词数量的方法
Jun 19 PHP
ThinkPHP实现更新数据实例详解(demo)
Jun 29 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 PHP
php ajax confirm 删除实例详解
Mar 06 PHP
JS操作XML中DTD介绍及使用方法分析
Jul 04 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 PHP
PHP简单实现正则匹配省市区的方法
Apr 13 #PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 #PHP
php框架CodeIgniter使用redis的方法分析
Apr 13 #PHP
php 字符串中是否包含指定字符串的多种方法
Apr 12 #PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 #PHP
PHP实现的mongoDB数据库操作类完整实例
Apr 10 #PHP
PHP实现的简单组词算法示例
Apr 10 #PHP
You might like
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
php结合curl实现多线程抓取
2015/07/09 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
Vue组件的使用教程详解
2018/01/05 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
汽车队司机先进事迹材料
2014/02/01 职场文书
求职信名称怎么写
2014/05/26 职场文书
高考升学宴答谢词
2015/01/20 职场文书
2015年教师节活动总结
2015/03/20 职场文书
技术员岗位职责范本
2015/04/11 职场文书
公司奖励通知
2015/04/21 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
Python中for后接else的语法使用
2021/05/18 Python
python opencv旋转图片的使用方法
2021/06/04 Python
如何利用Python实现一个论文降重工具
2021/07/09 Python