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+mysql事务rollback&commit示例
Feb 08 PHP
linux系统上支持php的 iconv()函数的方法
Oct 01 PHP
PHP 数组和字符串互相转换实现方法
Mar 26 PHP
解析php常用image图像函数集
Jun 24 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
php mail to 配置详解
Jan 16 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
PHP中IP地址与整型数字互相转换详解
Aug 20 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
Mar 24 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
May 24 PHP
php-fpm中max_children的配置
Mar 15 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 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中正确的使用json
2013/08/06 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
php使用$_POST或$_SESSION[]向js函数传参
2014/09/16 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
浅析Python多线程下的变量问题
2015/04/28 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
Python中os模块功能与用法详解
2020/02/26 Python
记一次Django响应超慢的解决过程
2020/09/17 Python
python中random模块详解
2021/03/01 Python
乌克兰的第一家手表店:Deka
2020/03/05 全球购物
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
文案策划求职信
2014/03/18 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
初三语文教学计划
2015/01/22 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js