php的instanceof和判断闭包Closure
类型运算符
instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例,在此之前用 is_a(),但是后来 is_a() 被废弃
<?php class MyClass { }class NotMyClass { } $a = new MyClass;var_dump($a instanceof MyClass); var_dump($a instanceof NotMyClass); ?>
以上例程会输出:
bool(true) bool(false)
instanceof 也可用来确定一个变量是不是继承自某一父类的子类的实例:
Example #2 对继承类使用 instanceof
<?php class ParentClass { }class MyClass extends ParentClass { }$a = new MyClass;var_dump($a instanceof MyClass); var_dump($a instanceof ParentClass); ?>
以上例程会输出:
bool(true) bool(true)
Closure 类
用于代表 匿名函数 的类.
匿名函数(在 PHP 5.3 中被引入)会产生这个类型的对象。在过去,这个类被认为是一个实现细节,但现在可以依赖它做一些事情。自 PHP 5.4 起,这个类带有一些方法,允许在匿名函数创建后对其进行更多的控制。
除了此处列出的方法,还有一个 __invoke 方法。这是为了与其他实现了 __invoke()魔术方法 的对象保持一致性,但调用匿名函数的过程与它无关。
类摘要
Closure { /* 方法 */ __construct ( void ) public static Closure bind ( Closure $closure , object $newthis [, mixed $newscope = 'static' ] ) public Closure bindTo ( object $newthis [, mixed $newscope = 'static' ] ) }
Table of Contents
- Closure::__construct — 用于禁止实例化的构造函数
- Closure::bind — 复制一个闭包,绑定指定的$this对象和类作用域。
- Closure::bindTo — 复制当前闭包对象,绑定指定的$this对象和类作用域。
判断是不是闭包
if ( $this->{$method} instanceof Closure ) {return call_user_func_array($this->{$method},$args); } else {throw new Exception("Invalid Function"); }//一切都要自行测试if ( $class instanceof Closure ) {} else {}
参考:http://php.net/manual/zh/language.operators.type.php
http://php.net/manual/zh/class.closure.php
php的instanceof和判断闭包Closure相关推荐
- Scala编程之闭包(closure)
一.概念 闭包:我们把一个函数与其相关引用环境(变量)组合成一个整体叫做闭包 概念晦涩难懂,下面我们用一个例子说明 二.小例子 def minusxy(x:Int) = (y:Int)=>x-y ...
- [转载]深入理解JavaScript闭包(closure)
最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业.对于初学者来说别说理解闭包了,就连文字叙述都很难看懂.撰写此文的目的就是用最通俗的文字揭开Java ...
- 【Groovy】闭包 Closure ( 闭包的 delegate 代理策略 | OWNER_FIRST | DELEGATE_FIRST | OWNER_ONLY | DELEGATE_ONLY )
文章目录 一.闭包的代理策略引入 二.闭包的四种代理策略 一.闭包的代理策略引入 分别在 Groovy 脚本 和 Test 类中定义 fun 方法 , 打印不同的内容 ; 在闭包 Closure 中分 ...
- 【Groovy】闭包 Closure ( 闭包类 Closure 简介 | this、owner、delegate 成员赋值及源码分析 )
文章目录 总结 一.闭包类 Closure 简介 二.闭包类 Closure 中 this.owner.delegate 成员 源码分析 三.分析编译后的字节码文件内容 总结 在闭包中 , 打印 th ...
- 【Groovy】闭包 Closure ( 闭包参数绑定 | curry 函数 | rcurry 函数 | ncurry 函数 | 代码示例 )
文章目录 一.闭包参数绑定 1.闭包参数绑定 curry 函数 2.闭包参数绑定 rcurry 函数 3.闭包参数绑定 ncurry 函数 二.完整代码示例 一.闭包参数绑定 闭包 Closure 提 ...
- 【Groovy】闭包 Closure ( 闭包参数列表规则 | 默认参数列表 | 不接收参数 | 接收自定义参数 )
文章目录 一.闭包参数列表 二.闭包参数列表代码示例 一.闭包参数列表 闭包的参数设置有如下情况 : 不接收参数 : 如果在定义闭包时 , 只写了 " -> " 符号 , 没 ...
- 【Groovy】闭包 Closure ( 闭包调用 | 闭包默认参数 it | 代码示例 )
文章目录 一.调用闭包 二.闭包默认参数 it 三.代码示例 一.调用闭包 执行 Closure 变量 的 call() 方法 , 可以调用该闭包 ; // 定义闭包变量def closure = { ...
- 【Groovy】闭包 Closure ( 闭包定义 | 闭包类型 | 查看编译后的字节码文件中的闭包类型变量 )
文章目录 一.闭包定义 二.闭包类型 三.查看编译后的字节码文件中的闭包类型变量 一.闭包定义 闭包 Closure 是 Groovy 中最常用的特性 , 使用闭包作为参数是 Groovy 语言的明显 ...
- Kettle使用_16 闭包Closure Generator树形数据
Kettle使用_16 闭包Closure Generator树形数据 需求: 通过Kettle的组件实现对树形结构数据的深度(层次)的生成. 解决方法:结合闭包Closure Generator.排 ...
最新文章
- 【js】common.jsp的使用
- [Jsoi2016]最佳团体 BZOJ4753 01分数规划+树形背包/dfs序
- Java程序员从笨鸟到菜鸟之(八十八)跟我学jquery(四)JQuery框架操作元素的属性与样式
- 直方图均衡化算法 matlab,matlab程序_retinex_frankle_mccann+直方图均衡化_去雾算法
- Java系统变量之System.getenv()和System.getProperty()
- java学习(87):Interage包装类进制转换
- 网卡流量统计实用工具nicstat
- Spring 框架简介及官方压缩包目录
- Mysql数据库从本地导出 服务器上导入时报 ERROR 2005 HY000 Unknown MySQL ser
- mysql8默认字符编码_mysql默认字符编码问题
- Flutter实战5 -- 天气查询APP重构之状态管理(ScopedModel)
- 【每日算法Day 107】面试必考:良心推荐,一题三解,不看后悔一辈子
- 【LeetCode】盛最多水的容器【双指针+贪心 寻找最大面积】
- 如何安装Vmware ESXi 6.7(图文介绍)
- java如何实现联网象棋代码_java中国象棋联网对战源码
- 网络操作系统VyOS之NAT实践
- 明明有 Windows 11,为什么还要用国产操作系统?
- 易到暂停办理线下提现 称贾跃亭隐瞒巨额债务成影响提现关键因素
- 【爬虫知识】浏览器开发者工具使用技巧总结
- 汽车 Automotive > 汽车安全芯片调研
热门文章
- 计算机与程序设计基础 vb,《VB程序设计基础》第4章 函数与过程
- 深度剖析什么是 SLI、SLO和SLA?
- java dom4j 写xml文件_Java实现——Dom4j读写XML文件
- 性能进阶:使用JMeter进行websocket测试
- linux 单用户模式 挂载u盘_Linux服务器如何识别移动硬盘?
- pycharm 安装PYQ5以及no Qt platform plugin could be initialized的问题
- 使用计算机进行电路分析,计算机辅助电路分析,computer aided analysis of circuits,音标,读音,翻译,英文例句,英语词典...
- php中超过int真么办,PHP int 超大溢出整数的 加减运算函数,如果有更好的方法欢迎探讨...
- install glm library in ubuntu and use it in qt
- DE11 Theory of General Second-order Linear Homogeneous ODEs