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中PDO的错误处理
Sep 04 PHP
对象失去焦点时自己动提交数据的实现代码
Nov 06 PHP
基于PHPExcel的常用方法总结
Jun 13 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
php通过rmdir删除目录的简单用法
Mar 18 PHP
PHP统一页面编码避免乱码问题
Apr 09 PHP
解析WordPress中的post_class与get_post_class函数
Jan 04 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
Feb 28 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
Apr 26 PHP
基于php+MySql实现学生信息管理系统实例
Aug 04 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运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
javascript中打印当前的时间实现思路及代码
2013/12/18 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
js实现移动端轮播图
2020/12/21 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
面试求职的个人自我评价
2013/11/16 职场文书
办公室保洁员岗位职责
2013/12/02 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
订货会邀请函
2015/01/31 职场文书
企业员工辞职信范文
2015/05/12 职场文书
2015年小学总务工作总结
2015/07/21 职场文书
聘任书范文大全
2015/09/21 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle