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语法速查表
Dec 06 PHP
php Http_Template_IT类库进行模板替换
Mar 19 PHP
php学习之变量的使用
May 29 PHP
PHP中array_slice函数用法实例详解
Nov 25 PHP
PHP 使用redis简单示例分享
Mar 05 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
PHP中session跨子域的三种实现方法
Jul 25 PHP
php实现数据库的增删改查
Feb 26 PHP
PHP 访问数据库配置通用方法(json)
May 20 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
PHP PDOStatement::execute讲解
Jan 31 PHP
Laravel框架数据库迁移操作实例详解
Apr 06 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操作memcache缓存方法分享
2015/06/03 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
前端微信支付js代码
2016/07/25 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
django认证系统 Authentication使用详解
2019/07/22 Python
Python 简单计算要求形状面积的实例
2020/01/18 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
基于Python的OCR实现示例
2020/04/03 Python
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
linux面试题参考答案(8)
2016/04/19 面试题
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
本科毕业生自荐信
2014/06/02 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
店长岗位职责
2015/02/11 职场文书
2016公司年会通知范文
2015/04/25 职场文书
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL