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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
php curl post 时出现的问题解决
Jan 30 PHP
php获取文件类型和文件信息的方法
Jul 10 PHP
ThinkPHP开发框架函数详解:C方法
Aug 14 PHP
php array_values 返回数组的所有值详解及实例
Nov 12 PHP
PHP利用Socket获取网站的SSL证书与公钥
Jun 18 PHP
PHP+原生态ajax实现的省市联动功能详解
Aug 15 PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 PHP
PHP回调函数概念与用法实例分析
Nov 03 PHP
Thinkphp 5.0实现微信企业付款到零钱
Sep 30 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
Oct 15 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原生DOM对象操作XML的方法
2016/10/17 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
laravel 时间格式转时间戳的例子
2019/10/11 PHP
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
2019/11/13 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
python 字典修改键(key)的几种方法
2018/08/10 Python
用pycharm开发django项目示例代码
2019/06/13 Python
python3.7 sys模块的具体使用
2019/07/22 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
Python3基本输入与输出操作实例分析
2020/02/14 Python
python如何查看安装了的模块
2020/06/23 Python
使用npy转image图像并保存的实例
2020/07/01 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
python 6行代码制作月历生成器
2020/09/18 Python
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
超市开店计划书
2014/09/15 职场文书
法人授权委托书范本
2014/09/17 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
学习保证书怎么写
2015/02/26 职场文书
爱心捐款活动总结
2015/05/09 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL