PHP中Closure类的使用方法及详解


Posted in PHP onOctober 09, 2015

Closure,匿名函数,又称为Anonymous functions,是php5.3的时候引入的。匿名函数就是没有定义名字的函数。这点牢牢记住就能理解匿名函数的定义了。

Closure 类(PHP 5 >= 5.3.0)简介 用于代表 匿名函数 的类. 匿名函数(在 PHP 5.3 中被引入)会产生这个类型的对象,下面我们来看一下PHP Closure类的使用方法及介绍。

PHP Closure类之前在PHP预定义接口中介绍过,但它可不是interface哦,它是一个内部的final类。Closure类是用来表示匿名函数的,所有的匿名函数都是Closure类的实例。

$func = function() {
  echo 'func called';
};
var_dump($func); //class Closure#1 (0) { }
$reflect =new ReflectionClass('Closure');
var_dump(
  $reflect->isInterface(), //false
  $reflect->isFinal(), //true
  $reflect->isInternal() //true
);

Closure类结构如下:

Closure::__construct — 用于禁止实例化的构造函数
Closure::bind — 复制一个闭包,绑定指定的$this对象和类作用域。
Closure::bindTo — 复制当前闭包对象,绑定指定的$this对象和类作用域。

看一个绑定$this对象和作用域的例子:

class Lang
{
  private $name = 'php';
}
$closure = function () {
  return $this->name;
};
$bind_closure = Closure::bind($closure, new Lang(), 'Lang');
echo $bind_closure(); //php

另外,PHP使用魔术方法__invoke()可以使类变成闭包:

class Invoker {
  public function __invoke() {return __METHOD__;}
}
$obj = new Invoker;
echo $obj(); //Invoker::__invoke

以上内容就是小编给大家分享的PHP中Closure类的使用方法及详解,希望大家喜欢。

PHP 相关文章推荐
Oracle Faq(Oracle的版本)
Oct 09 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
phpnow php探针环境检测代码
Nov 04 PHP
php中mysql连接方式PDO使用详解
Feb 25 PHP
PHP5.3以上版本安装ZendOptimizer扩展
Mar 27 PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 PHP
mac下多个php版本快速切换的方法
Oct 09 PHP
浅谈PHP面向对象之访问者模式+组合模式
May 22 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
PHP fopen函数用法实例讲解
Feb 15 PHP
PHP实现计算器小功能
Aug 28 PHP
PHP获取学生成绩的方法
Nov 17 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
Oct 09 #PHP
PHP程序员不应该忽略的3点
Oct 09 #PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
Oct 09 #PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 #PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 #PHP
PHP抽奖算法程序代码分享
Oct 08 #PHP
php视频拍照上传头像功能实现代码分享
Oct 08 #PHP
You might like
Apache2 httpd.conf 中文版
2006/11/17 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
python实现统计代码行数的方法
2015/05/22 Python
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
python技能之数据导出excel的实例代码
2017/08/11 Python
Python中利用xpath解析HTML的方法
2018/05/14 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
大学生入党思想汇报
2014/01/14 职场文书
书法比赛获奖感言
2014/02/10 职场文书
北体毕业生求职信
2014/02/28 职场文书
煤矿安全承诺书
2014/05/22 职场文书
推广活动策划方案
2014/08/23 职场文书
总经理岗位职责范本
2015/04/01 职场文书
Python中的 Set 与 dict
2022/03/13 Python