PHP is_subclass_of函数的一个BUG和解决方法

is_subclass_of的作用:

bool is_subclass_of ( object object, string class_name )

如果对象 object 所属类是类 class_name 的子类,则返回 TRUE,否则返回 FALSE。

注: 自 PHP 5.0.3 起也可以用一个字符串来指定 object 参数(类名)。

使用例子:

#判断$className是否是$type的子类

is_subclass_of($className,$type);

php5.3.7版本前针对interface会有一个bug

bug:https://bugs.php.net/bug.php?id=53727

interface MyInterface {}

class ParentClass implements MyInterface { }

class ChildClass extends ParentClass { }

# true

is_subclass_of('ChildClass', 'MyInterface');

# false

is_subclass_of('ParentClass', 'MyInterface');

解决办法:

function isSubclassOf($className, $type){

// 如果 $className 所属类是 $type 的子类,则返回 TRUE

if (is_subclass_of($className, $type)) {

return true;

}

// 如果php版本>=5.3.7 不存在interface bug 所以 $className 不是 $type 的子类

if (version_compare(PHP_VERSION, '5.3.7', '>=')) {

return false;

}

// 如果$type不是接口 也不会有bug 所以 $className 不是 $type 的子类

if (!interface_exists($type)) {

return false;

}

//  创建一个反射对象

$r = new ReflectionClass($className);

//  通过反射对象判断该类是否属于$type接口

return $r->implementsInterface($type);

}相关阅读:

javascript中setTimeout使用指南

win10系统升级后电脑经常无响应提示a language pack isnt avaliable的原因及解决方法

CSS垂直居中实现方法大全

Javascript 按位取反运算符 (~)

集合类Array List HashTable实例操作练习

详解Linux系统中wget的使用方法

BOOTCAMP “您的磁盘不能恢复为单一的分区”解决方法

linux系统中轻量级内核虚拟化技术LXC安装部署实践

Win10准正式版Build 10240已经送交微软合作厂商

JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)

jquery动态添加删除一行数据示例

Win10内置应用安装失败报错0x80073cff的解决方法

JS实现很实用的对联广告代码(可自适应高度)

PHP fastcgi模式上传大文件(大约有300多K)报错

php is_subclass_of,PHP_PHP is_subclass_of函数的一个BUG和解决方法,is_subclass_of的作用: 复制代码 - phpStudy...相关推荐

  1. php is_subclass_of,PHP is_subclass_of函数的一个BUG和解决方法

    is_subclass_of的作用: 复制代码 代码如下: bool is_subclass_of ( object object, string class_name ) 如果对象 object 所 ...

  2. 设置PSPad调用devcpp中的mingw Gcc进行编译;另附PSPad中文版一个BUG的解决方法

    PSPad是一个优秀的代码编辑工具,和UE相比,功能丝毫不弱,而且PSPad是免费的,这是最重要地,没有版权问题了. 前面曾说过安装DEV-CPP后,用命令行及UltraEdit调用devcpp中的m ...

  3. 关于VC++6.0中getline函数的一个bug

    关于VC++6.0中getline函数的一个bug 最近在调试程序时,发现getline函数在VC++6.0和其他编译器上运行结果不一样,比如有如下这段程序: #include <iostrea ...

  4. whitelabel error page怎么解决_pyppeteer使用遇到的bug及解决方法

    pyppeteer的问题 本身这个项目是非官方的,是基于谷歌官方puppeteer的python版本. 本来chrome就问题多多,puppeteer也是各种坑,加上pyppeteer是前两者的pyt ...

  5. 浅谈Android Fragment嵌套使用存在的一些BUG以及解决方法

    自从Android3.0引入了Fragment之后,使用Activity去嵌套一些Fragment的做法也变得更加流行,这确实是Fragment带来的一些优点,比如说:Fragment可以使你能够将a ...

  6. 回调函数与回调地狱及其解决方法 | JavaScript

    JavaScript中的回调函数与回调地狱及其解决方法 以下为整理的思维导图 图片版+文字版 文末附有参考文章链接 知识点思维导图版 一.什么是回调函数 1.MDN的定义 回调函数是作为参数传给另一个 ...

  7. 关于深澜校园网与Windows系统之间存在的bug及解决方法

    关于深澜校园网与Windows系统之间存在的bug及解决方法 问题描述 大多数装了深澜校园网客户端的Windows8或者win10 1809及以后版本系统用户在一次重启电脑或者普通开机之后,发现深澜拨 ...

  8. 魔兽世界8.0服务器不稳定老掉线,魔兽世界8.0升级常见BUG及解决方法介绍

    魔兽世界8.0升级常见BUG及解决方法介绍 2018-08-15 09:36:56来源:游戏下载编辑:苦力趴评论(0) <魔兽世界>8.0版本"争霸艾泽拉斯"已经在今日 ...

  9. 跑论文Unsupervised Question Answering by Cloze Translation的实验遇到的bug以及解决方法

    前言 花了3~4天,其实不止,也可以说没有那么久,因为前期没有实验环境的时候熟悉了下ubuntu的用法啥的,然后跑这个论文代码的时候也是停停歇歇的,因为服务器要用我师姐的账号联网,但是我师姐也要用,还 ...

最新文章

  1. windbg调试命令2(!gle、g、p)
  2. 数据库实现列值合并为行
  3. 金立手机又推新品!翻盖手机A326发布 意图复刻经典
  4. android 实现 效果代码,Android实现雷达View效果的示例代码
  5. sqlserver 2008r2 执行代码 快捷键
  6. 【linux高级程序设计】(第九章)进程间通信-管道 3
  7. 2.5.1 命令与参数
  8. 【从线性回归到BP神经网络】第三部分:Logistic回归
  9. 软件项目管理案例教程课后答案
  10. 最全面的PS快捷键使用指南
  11. mw150r 虚拟服务器,水星MW150R V1.3路由器web刷dd-wrt和741n以及刷回官方原版过程记录...
  12. 计算机DVD驱动禁用怎么恢复,设备管理器中找不到dvd驱动器 怎么恢复 - 驱动管家...
  13. 阿里知产研究院报告:侵犯知识产权行为的罪与罚 | 湖畔新知汇
  14. mysql distance_MySql中的一些小坑
  15. CTF-web-秋名山老司机
  16. Win11的几个实用技巧系列之不能玩植物大战僵尸、如何彻底删除360所有文件
  17. 《AR与VR开发实战》导读
  18. Android用mediaPlayer.prepare()报错
  19. [日企面试问题]日本企業面接問題
  20. CS5266Typec转HDMI+PD+U2+U3多口拓展坞设计原理图

热门文章

  1. C++结构体中有构造函数和析构函数
  2. .sln vcxproj vcxproj.filter文件作用(转载)
  3. 仿回收站效果的设计与实现
  4. Linux开机启动过程(2):内核启动的第一步
  5. 买房前需要注意的事项有哪些
  6. jQuery菜鸟总结
  7. RecycleView的Item Animator动画
  8. java怎么查问题,java线上问题排查(日志、资源、代码定位)
  9. 黑莓桌面管理器4.2_虚拟桌面管理器行业现状调研分析及发展趋势预测报告(2020)...
  10. notepad怎么运行php程序,notepad怎么运行php程序