类型运算符

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相关推荐

  1. Scala编程之闭包(closure)

    一.概念 闭包:我们把一个函数与其相关引用环境(变量)组合成一个整体叫做闭包 概念晦涩难懂,下面我们用一个例子说明 二.小例子 def minusxy(x:Int) = (y:Int)=>x-y ...

  2. [转载]深入理解JavaScript闭包(closure)

    最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业.对于初学者来说别说理解闭包了,就连文字叙述都很难看懂.撰写此文的目的就是用最通俗的文字揭开Java ...

  3. 【Groovy】闭包 Closure ( 闭包的 delegate 代理策略 | OWNER_FIRST | DELEGATE_FIRST | OWNER_ONLY | DELEGATE_ONLY )

    文章目录 一.闭包的代理策略引入 二.闭包的四种代理策略 一.闭包的代理策略引入 分别在 Groovy 脚本 和 Test 类中定义 fun 方法 , 打印不同的内容 ; 在闭包 Closure 中分 ...

  4. 【Groovy】闭包 Closure ( 闭包类 Closure 简介 | this、owner、delegate 成员赋值及源码分析 )

    文章目录 总结 一.闭包类 Closure 简介 二.闭包类 Closure 中 this.owner.delegate 成员 源码分析 三.分析编译后的字节码文件内容 总结 在闭包中 , 打印 th ...

  5. 【Groovy】闭包 Closure ( 闭包参数绑定 | curry 函数 | rcurry 函数 | ncurry 函数 | 代码示例 )

    文章目录 一.闭包参数绑定 1.闭包参数绑定 curry 函数 2.闭包参数绑定 rcurry 函数 3.闭包参数绑定 ncurry 函数 二.完整代码示例 一.闭包参数绑定 闭包 Closure 提 ...

  6. 【Groovy】闭包 Closure ( 闭包参数列表规则 | 默认参数列表 | 不接收参数 | 接收自定义参数 )

    文章目录 一.闭包参数列表 二.闭包参数列表代码示例 一.闭包参数列表 闭包的参数设置有如下情况 : 不接收参数 : 如果在定义闭包时 , 只写了 " -> " 符号 , 没 ...

  7. 【Groovy】闭包 Closure ( 闭包调用 | 闭包默认参数 it | 代码示例 )

    文章目录 一.调用闭包 二.闭包默认参数 it 三.代码示例 一.调用闭包 执行 Closure 变量 的 call() 方法 , 可以调用该闭包 ; // 定义闭包变量def closure = { ...

  8. 【Groovy】闭包 Closure ( 闭包定义 | 闭包类型 | 查看编译后的字节码文件中的闭包类型变量 )

    文章目录 一.闭包定义 二.闭包类型 三.查看编译后的字节码文件中的闭包类型变量 一.闭包定义 闭包 Closure 是 Groovy 中最常用的特性 , 使用闭包作为参数是 Groovy 语言的明显 ...

  9. Kettle使用_16 闭包Closure Generator树形数据

    Kettle使用_16 闭包Closure Generator树形数据 需求: 通过Kettle的组件实现对树形结构数据的深度(层次)的生成. 解决方法:结合闭包Closure Generator.排 ...

最新文章

  1. 【js】common.jsp的使用
  2. [Jsoi2016]最佳团体 BZOJ4753 01分数规划+树形背包/dfs序
  3. Java程序员从笨鸟到菜鸟之(八十八)跟我学jquery(四)JQuery框架操作元素的属性与样式
  4. 直方图均衡化算法 matlab,matlab程序_retinex_frankle_mccann+直方图均衡化_去雾算法
  5. Java系统变量之System.getenv()和System.getProperty()
  6. java学习(87):Interage包装类进制转换
  7. 网卡流量统计实用工具nicstat
  8. Spring 框架简介及官方压缩包目录
  9. Mysql数据库从本地导出 服务器上导入时报 ERROR 2005 HY000 Unknown MySQL ser
  10. mysql8默认字符编码_mysql默认字符编码问题
  11. Flutter实战5 -- 天气查询APP重构之状态管理(ScopedModel)
  12. 【每日算法Day 107】面试必考:良心推荐,一题三解,不看后悔一辈子
  13. 【LeetCode】盛最多水的容器【双指针+贪心 寻找最大面积】
  14. 如何安装Vmware ESXi 6.7(图文介绍)
  15. java如何实现联网象棋代码_java中国象棋联网对战源码
  16. 网络操作系统VyOS之NAT实践
  17. 明明有 Windows 11,为什么还要用国产操作系统?
  18. 易到暂停办理线下提现 称贾跃亭隐瞒巨额债务成影响提现关键因素
  19. 【爬虫知识】浏览器开发者工具使用技巧总结
  20. 汽车 Automotive > 汽车安全芯片调研

热门文章

  1. 计算机与程序设计基础 vb,《VB程序设计基础》第4章 函数与过程
  2. 深度剖析什么是 SLI、SLO和SLA?
  3. java dom4j 写xml文件_Java实现——Dom4j读写XML文件
  4. 性能进阶:使用JMeter进行websocket测试
  5. linux 单用户模式 挂载u盘_Linux服务器如何识别移动硬盘?
  6. pycharm 安装PYQ5以及no Qt platform plugin could be initialized的问题
  7. 使用计算机进行电路分析,计算机辅助电路分析,computer aided analysis of circuits,音标,读音,翻译,英文例句,英语词典...
  8. php中超过int真么办,PHP int 超大溢出整数的 加减运算函数,如果有更好的方法欢迎探讨...
  9. install glm library in ubuntu and use it in qt
  10. DE11 Theory of General Second-order Linear Homogeneous ODEs