• 技术文章 >后端开发 >php教程

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

    2016-07-13 10:29:10原创442
    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);
    }

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/778999.htmlTechArticleis_subclass_of的作用: 复制代码 代码如下: bool is_subclass_of ( object object, string class_name ) 如果对象 object 所属类是类 class_name 的子类,则返回...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP is subclass of 函数
    上一篇:mac下Apache + MySql + PHP网站开发_PHP教程 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • PHP Hyperf 3.0 发布!新功能速览• 详解PHP怎么实现旋转图片验证• 简单理解PHP超级全局变量• 一起聊聊PHP的路由与伪静态应用• PHP中几种常见的开发模式
    1/1

    PHP中文网