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下通过POST还是GET来传值
Jun 05 PHP
PHP strtr() 函数使用说明
Nov 21 PHP
php 获取SWF动画截图示例代码
Feb 10 PHP
php实现的常见排序算法汇总
Sep 08 PHP
php基本函数汇总
Jul 09 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
基于PHP实现用户注册登录功能
Oct 14 PHP
使用PHP免费发送定时短信的实例
Oct 24 PHP
php实现文件上传及头像预览功能
Jan 15 PHP
php实现的二分查找算法示例
Jun 20 PHP
thinkPHP实现基于ajax的评论回复功能
Jun 22 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 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
?生?D片??C字串
2006/12/06 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
常用简易JavaScript函数
2009/04/09 Javascript
javascript Math.random()随机数函数
2009/11/04 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
jQuery实战之品牌展示列表效果
2011/04/10 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
jQuery 导航自动跟随滚动的实现代码
2018/05/30 jQuery
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
Python3中exp()函数用法分析
2019/02/19 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
2019/10/17 Python
详解Python 中的容器 collections
2020/08/17 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
大学生饮食配送创业计划书
2014/01/04 职场文书
2014年高三毕业生自我评价
2014/01/11 职场文书
上课迟到检讨书
2014/02/19 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android
Golang流模式之grpc的四种数据流
2022/04/13 Golang
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS