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数组中的重复值的实现代码
Jul 17 PHP
用穿越火线快速入门php面向对象
Feb 22 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
Jun 05 PHP
xss防御之php利用httponly防xss攻击
Mar 21 PHP
PHP按行读取文件时删除换行符的3种方法
May 04 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
php判断对象是派生自哪个类的方法
Jun 20 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
laravel-admin select框默认选中的方法
Oct 03 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
兼容ie6浏览器的php下载文件代码分享
2014/07/14 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
js快速排序的实现代码
2013/12/08 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
python3 pygame实现接小球游戏
2019/05/14 Python
numpy数组广播的机制
2019/07/12 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
在python image 中实现安装中文字体
2020/05/16 Python
Python列表如何更新值
2020/05/27 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
学校消防演习方案
2014/02/19 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
查摆问题自查报告范文
2014/10/13 职场文书
大学生预备党员自我评价
2015/03/04 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书