PHP is_subclass_of函数的一个BUG和解决方法
is_subclass_of的作用:
boolis_subclass_of(objectobject,stringclass_name)
如果对象object所属类是类class_name的子类,则返回TRUE,否则返回FALSE。
注:自PHP5.0.3起也可以用一个字符串来指定object参数(类名)。
使用例子:
#判断$className是否是$type的子类 is_subclass_of($className,$type);
php5.3.7版本前针对interface会有一个bug
bug:https://bugs.php.net/bug.php?id=53727
interfaceMyInterface{}
classParentClassimplementsMyInterface{}
classChildClassextendsParentClass{}
#true
is_subclass_of('ChildClass','MyInterface');
#false
is_subclass_of('ParentClass','MyInterface');
解决办法:
functionisSubclassOf($className,$type){
//如果$className所属类是$type的子类,则返回TRUE
if(is_subclass_of($className,$type)){
returntrue;
}
//如果php版本>=5.3.7不存在interfacebug所以$className不是$type的子类
if(version_compare(PHP_VERSION,'5.3.7','>=')){
returnfalse;
}
//如果$type不是接口也不会有bug所以$className不是$type的子类
if(!interface_exists($type)){
returnfalse;
}
// 创建一个反射对象
$r=newReflectionClass($className);
// 通过反射对象判断该类是否属于$type接口
return$r->implementsInterface($type);
}热门推荐
10 新年门口花束祝福语简短
11 盘锦结婚祝福语大全简短
12 父母生日祝福语 简短独特
13 家庭恩爱祝福语简短英文
14 高考俄语祝福语大全简短
15 虎年祝福语 诗句唯美简短
16 生日婚礼祝福语简短精辟
17 虎年喝酒拜年祝福语简短
18 教师闺蜜祝福语简短