国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

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

2024-09-04 11:43:20
字體:
供稿:網(wǎng)友

這篇文章主要介紹了PHP is_subclass_of函數(shù)的一個BUG和解決方法,這個BUG存在于php5.3.7版本以前,并且針對interface方面,需要的朋友可以參考下。

is_subclass_of的作用:

bool is_subclass_of ( object object, string class_name )

如果對象 object 所屬類是類 class_name 的子類,則返回 TRUE,否則返回 FALSE。

注: 自 PHP 5.0.3 起也可以用一個字符串來指定 object 參數(shù)(類名)。

使用例子:

#判斷$className是否是$type的子類

is_subclass_of($className,$type);

php5.3.7版本前針對interface會有一個bug

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

代碼如下:

  1. interface MyInterface {} 
  2. class ParentClass implements MyInterface { } 
  3. class ChildClass extends ParentClass { } 
  4.  
  5. # true 
  6. is_subclass_of('ChildClass''MyInterface'); 
  7. # false 
  8. is_subclass_of('ParentClass''MyInterface'); 

解決辦法:

  1. function isSubclassOf($className$type){ 
  2.     // 如果 $className 所屬類是 $type 的子類,則返回 TRUE   
  3.     if (is_subclass_of($className$type)) { 
  4.         return true; 
  5.     } 
  6.  
  7.     // 如果php版本>=5.3.7 不存在interface bug 所以 $className 不是 $type 的子類 
  8.     if (version_compare(PHP_VERSION, '5.3.7''>=')) { 
  9.         return false; 
  10.     } 
  11.  
  12.     // 如果$type不是接口 也不會有bug 所以 $className 不是 $type 的子類 
  13.     if (!interface_exists($type)) { 
  14.         return false; 
  15.     } 
  16.  
  17.     //  創(chuàng)建一個反射對象 
  18.     $r = new ReflectionClass($className); 
  19.     //  通過反射對象判斷該類是否屬于$type接口 
  20.     return $r->implementsInterface($type); 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 临夏县| 沧州市| 准格尔旗| 酒泉市| 樟树市| 错那县| 三明市| 阜阳市| 潮州市| 伊金霍洛旗| 镇沅| 定边县| 灵台县| 吕梁市| 肥城市| 揭阳市| 会东县| 恩平市| 朝阳县| 伊吾县| 黄石市| 久治县| 廉江市| 麻栗坡县| 阿瓦提县| 海兴县| 华宁县| 包头市| 冀州市| 介休市| 鄄城县| 青田县| 瑞安市| 连江县| 海伦市| 盐池县| 曲阳县| 房产| 祁东县| 长治市| 天长市|