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 相关文章推荐
php正则
Jul 07 PHP
提问的智慧
Oct 09 PHP
桌面中心(四)数据显示
Oct 09 PHP
实现php加速的eAccelerator dll支持文件打包下载
Sep 30 PHP
台湾中原大学php教程孙仲岳主讲
Jan 07 PHP
php eval函数用法 PHP中eval()函数小技巧
Oct 31 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
Mar 19 PHP
php将12小时制转换成24小时制的方法
Mar 31 PHP
浅谈php7的重大新特性
Oct 23 PHP
smarty的section嵌套循环用法示例
May 28 PHP
php实现的debug log日志操作类实例
Jul 12 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 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
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
php strcmp使用说明
2010/04/22 PHP
PHP 数组和字符串互相转换实现方法
2013/03/26 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
vue实现在线翻译功能
2019/09/27 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
在Docker上开始部署Python应用的教程
2015/04/17 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
python3中数组逆序输出方法
2020/12/01 Python
python实现经纬度采样的示例代码
2020/12/10 Python
某公司部分笔试题
2013/11/05 面试题
大二学习计划书范文
2014/04/27 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
小学教师2014年度工作总结
2014/12/03 职场文书
2014年工商所工作总结
2014/12/09 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript