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 相关文章推荐
新版PHP极大的增强功能和性能
Oct 09 PHP
PHP个人网站架设连环讲(一)
Oct 09 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
Oct 13 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
Sep 23 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
Apr 09 PHP
PHP中多维数组的foreach遍历示例
Jun 13 PHP
php简单socket服务器客户端代码实例
May 18 PHP
PHP微信红包生成代码分享
Oct 06 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
Apr 19 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
php数据结构之顺序链表与链式线性表示例
Jan 22 PHP
Git命令之分支详解
Mar 02 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
PHP MVC模式在网站架构中的实现分析
2010/03/04 PHP
数据库中排序的对比及使用条件详解
2012/02/23 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
PHP在不同页面间传递Json数据示例代码
2013/06/08 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
Prototype源码浅析 Number部分
2012/01/16 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
2012/10/11 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
Python 不同对象比较大小示例探讨
2014/08/21 Python
python中list循环语句用法实例
2014/11/10 Python
python实现定时同步本机与北京时间的方法
2015/03/24 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
python3.7调试的实例方法
2020/07/21 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
2020/10/12 Python
python中time tzset()函数实例用法
2021/02/18 Python
allbeauty美国:英国在线美容店
2019/03/11 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
加拿大留学自荐信
2014/01/28 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
工作计划范文之财务管理
2019/08/09 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python