国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 牟定县| 林周县| 辽宁省| 通道| 汤原县| 延川县| 荔浦县| 方城县| 宁都县| 和龙市| 绿春县| 普洱| 兴仁县| 茂名市| 铜鼓县| SHOW| 雷州市| 清河县| 萍乡市| 昭通市| 嘉定区| 南投市| 乐亭县| 麻城市| 庆城县| 久治县| 司法| 雷山县| 区。| 丹江口市| 远安县| 灌云县| 葵青区| 双牌县| 丰原市| 闵行区| 和顺县| 梁山县| 津市市| 淳安县| 辽源市|