亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP is_subclass_of函數(shù)的一個(gè)BUG和解決方法

 更新時(shí)間:2014年06月01日 21:33:45   作者:  
這篇文章主要介紹了PHP is_subclass_of函數(shù)的一個(gè)BUG和解決方法,這個(gè)BUG存在于php5.3.7版本以前,并且針對(duì)interface方面,需要的朋友可以參考下

is_subclass_of的作用:

復(fù)制代碼 代碼如下:
bool is_subclass_of ( object object, string class_name )

如果對(duì)象 object 所屬類是類 class_name 的子類,則返回 TRUE,否則返回 FALSE。
注: 自 PHP 5.0.3 起也可以用一個(gè)字符串來(lái)指定 object 參數(shù)(類名)。

使用例子:

復(fù)制代碼 代碼如下:

#判斷$className是否是$type的子類
is_subclass_of($className,$type);

php5.3.7版本前針對(duì)interface會(huì)有一個(gè)bug

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

復(fù)制代碼 代碼如下:

interface MyInterface {}
class ParentClass implements MyInterface { }
class ChildClass extends ParentClass { }

# true
is_subclass_of('ChildClass', 'MyInterface');
# false
is_subclass_of('ParentClass', 'MyInterface');

解決辦法:

復(fù)制代碼 代碼如下:
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不是接口 也不會(huì)有bug 所以 $className 不是 $type 的子類
    if (!interface_exists($type)) {
        return false;
    }

    //  創(chuàng)建一個(gè)反射對(duì)象
    $r = new ReflectionClass($className);
    //  通過(guò)反射對(duì)象判斷該類是否屬于$type接口
    return $r->implementsInterface($type);
}

相關(guān)文章

最新評(píng)論