php的instanceof和判断闭包Closure操作示例


Posted in PHP onJanuary 26, 2020

本文实例讲述了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程序设计有所帮助。

PHP 相关文章推荐
ftp类(example.php)
Oct 09 PHP
我的论坛源代码(二)
Oct 09 PHP
《APMServ 5.1.2》使用图解
Oct 23 PHP
实现dedecms全站URL静态化改造的代码
Mar 29 PHP
php获取操作系统语言代码
Nov 04 PHP
浅析iis7.5安装配置php环境
May 10 PHP
PHP页面间传递值和保持值的方法
Aug 24 PHP
PHP的自定义模板引擎
Mar 24 PHP
php实现的错误处理封装类实例
Jun 20 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 PHP
yii2.0框架场景的简单使用示例
Jan 25 #PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 #PHP
laravel框架模型和数据库基础操作实例详解
Jan 25 #PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 #PHP
laravel框架中间件简单使用方法示例
Jan 25 #PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
Jan 23 #PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
Jan 23 #PHP
You might like
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
jquery 弹出层实现代码
2009/10/30 Javascript
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
js简单时间比较的方法
2016/08/02 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
餐厅经理岗位职责范本
2014/02/17 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python