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 相关文章推荐
source.php查看源文件
Dec 09 PHP
字母顺序颠倒而单词顺序不变的php代码
Aug 08 PHP
PHP中array_merge和array相加的区别分析
Jun 17 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
Jun 21 PHP
ThinkPHP的Widget扩展实例
Jun 19 PHP
PHP开发框架kohana3 自定义路由设置示例
Jul 14 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
Dec 18 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
关于Laravel Route重定向的一个注意点
Jan 16 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
Jul 27 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 PHP
laravel框架创建授权策略实例分析
Nov 22 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
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
thinkPHP实现表单自动验证
2014/12/24 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
python通过函数属性实现全局变量的方法
2015/05/16 Python
python计算时间差的方法
2015/05/20 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
暑期社会实践感言
2014/02/25 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
抗洪救灾标语
2014/10/08 职场文书
瘦西湖导游词
2015/02/03 职场文书
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
Java 语言中Object 类和System 类详解
2021/07/07 Java/Android