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常用表单验证类用法实例
Jun 18 PHP
php表单提交实例讲解
Nov 12 PHP
Yii中CGridView实现批量删除的方法
Dec 28 PHP
php获取当前页面完整URL地址
Dec 30 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
PHP实现无限分类的实现方法
Nov 14 PHP
一个非常实用的php文件上传类
Jul 04 PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 PHP
PHP操作Redis数据库常用方法示例
Aug 25 PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 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
我的群发邮件程序
2006/10/09 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
jQuery动态创建html元素的常用方法汇总
2014/09/05 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
理解JS绑定事件
2016/01/19 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
2016/02/18 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
python的socket编程入门
2018/01/29 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
公务员培训自我鉴定
2013/09/19 职场文书
战友聚会邀请函
2014/01/18 职场文书
学生安全承诺书
2014/05/22 职场文书
三八妇女节标语
2014/10/09 职场文书
大二学年个人总结
2015/03/03 职场文书
Java的Object类的九种方法
2022/04/13 Java/Android
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis