最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

is_subclass_of的作用:

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

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

使用例子:

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

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

php5.3.7版本前針對interface會有一個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不是接口 也不會有bug 所以 $className 不是 $type 的子類
    if (!interface_exists($type)) {
        return false;
    }

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

相關(guān)文章

最新評論

新龙县| 东宁县| 岑溪市| 鸡西市| 广灵县| 巴南区| 北京市| 辽阳县| 长顺县| 沈丘县| 永济市| 龙川县| 上栗县| 库尔勒市| 广饶县| 邓州市| 嘉鱼县| 延津县| 惠来县| 花垣县| 乌拉特中旗| 汉中市| 布尔津县| 渝中区| 盖州市| 县级市| 商都县| 宝丰县| 阿克| 普定县| 阳江市| 宜川县| 黎城县| 日土县| 莲花县| 曲水县| 巩留县| 芜湖县| 元朗区| 曲阳县| 建阳市|