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 相关文章推荐
一个用php3编写的简单计数器
Oct 09 PHP
MySql中正则表达式的使用方法描述
Jul 30 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 PHP
ThinkPHP单字母函数(快捷方法)使用总结
Jul 23 PHP
PHP实现加密的几种方式介绍
Feb 22 PHP
php格式化json函数示例代码
May 12 PHP
如何使用PHP给图片加水印
Oct 12 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
php 生成加密公钥加密私钥实例详解
Jun 16 PHP
PHP与以太坊交互详解
Aug 24 PHP
Yii2.0建立公共方法简单示例
Jan 29 PHP
PHP设计模式(观察者模式)
Jul 07 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录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
php 删除无限级目录与文件代码共享
2008/11/22 PHP
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
Bootstrap树形控件使用方法详解
2016/01/27 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
Kindeditor单独调用多图上传实例
2017/07/31 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
2018/10/28 Python
python读取图片任意范围区域
2019/01/23 Python
python创造虚拟环境方法总结
2019/03/04 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
解决python运行效率不高的问题
2020/07/20 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
weblogic面试题
2016/03/07 面试题
What is view? why do we have view?
2012/06/22 面试题
销售类个人求职信范文
2013/09/25 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
公诉意见书范文
2015/06/05 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
详解Redis瘦身指南
2021/05/26 Redis
java调用Restful接口的三种方法
2021/08/23 Java/Android