当前位置:  编程技术>php

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

    来源: 互联网  发布时间:2014-08-26

    本文导语:  is_subclass_of的作用: 代码如下:bool is_subclass_of ( object object, string class_name )如果对象 object 所属类是类 class_name 的子类,则返回 TRUE,否则返回 FALSE。注: 自 PHP 5.0.3 起也可以用一个字符串来指定 object 参数(类名)。 使用例子:...

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);
}

    
 
 

您可能感兴趣的文章:

  • PHP的substr() 函数用法
  • php构造函数与析构函数
  • php中检测变量是否是一个对象的is_object函数介绍及用法举例
  • php构造函数与析构函数初探
  • php session_id()函数介绍及代码实例
  • PHP中的Pack()函数,Java有哪个函数与之对应???
  • php中session_id()函数详细介绍,会话id生成过程及session id长度
  • php构造函数与析构函数 php内存管理函数
  • php将html特殊字符转换成html字符串的函数:htmlspecialchars()介绍及代码举例
  • php数组函数之array_combine() 数组合并函数
  • php使用socket_bind()函数绑定IP地址
  • php构造函数和析构函数学习
  • php将unix时间戳转换成字符串时间函数(date)
  • php trim函数执行过程解析
  • php通过pack和unpack函数实现对二进制数据封装及解析
  • php递归函数小例子
  • php时间格式化函数date介绍及用法参考
  • php sprintf函数用法 php浮点数格式
  • php递归示例 php递归函数代码
  • php构造函数与析构函数实例分析
  • 在php中如何用exec()函数运行mv命令
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • Starting PHP with FastCGI ??? 请熟悉PHP和LINUX的高手帮忙解决这个问题,谢谢!!!
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 安装好的Redhat Linux 8.0,带Apache和php支持,安装上Mysql后,运行正常,但检测提示php不支持Mysql,如何解决?
  • php网页标题中文乱码如何解决
  • 开源PHP电商解决方案 Sylius
  • PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
  • iis加载不到php.ini的解决方法
  • php出现Class 'XsltProcessor' not found问题的解决方法
  • PHP上传文件过大$_FILES为空的解决方法
  • php中检测变量是否是一个对象的is_object函数介绍及用法举例 iis7站长之家
  • PHP文件型缓存解决方案 Secache
  • php4.1.2版本更新问题,解决的给100分
  • php中$美元符号与Zen Coding冲突问题解决方法分享
  • php网页标题中文乱码的有效解决方法
  • Python和php通信乱码问题解决方法
  • PHP上传文件大小限制二种解决方法
  • php syntax error, unexpected $end 错误怎么解决
  • php的webservice的wsdl的XML无法显示问题的解决方法
  • 解决php json_encode中文转码、乱码问题
  • php pdo编码乱码问题的解决方法
  • PHP 5.4.19 和 PHP 5.5.3 发布及下载地址
  • IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
  • PHP去除html标签,php标记及css样式代码参考
  • php输入流php://input使用示例(php发送图片流到服务器)
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞
  • PHP转换器 HipHop for PHP
  • php通过socket_bind()设置IP地址代码示例
  • PHP 框架 Pop php
  • php安装完成后如何添加mysql扩展
  • PHP的JavaScript框架 PHP.JS


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3