PHP is_subclass_of函数的一个BUG和解决方法
2014-06-01 00:00
495 查看
is_subclass_of的作用:
如果对象 object 所属类是类 class_name 的子类,则返回 TRUE,否则返回 FALSE。
注: 自 PHP 5.0.3 起也可以用一个字符串来指定 object 参数(类名)。
使用例子:
php5.3.7版本前针对interface会有一个bug
bug:https://bugs.php.net/bug.php?id=53727
解决办法:
bool is_subclass_of ( object object, string class_name )
如果对象 object 所属类是类 class_name 的子类,则返回 TRUE,否则返回 FALSE。
注: 自 PHP 5.0.3 起也可以用一个字符串来指定 object 参数(类名)。
使用例子:
#判断$className是否是$type的子类 is_subclass_of($className,$type);
php5.3.7版本前针对interface会有一个bug
bug:https://bugs.php.net/bug.php?id=53727
interface MyInterface {} class ParentClass implements MyInterface { } class ChildClass extends ParentClass { } # true is_subclass_of('ChildClass', 'MyInterface'); # false is_subclass_of('ParentClass', 'MyInterface');
解决办法:
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; } // 创建一个反射对象 $r = new ReflectionClass($className); // 通过反射对象判断该类是否属于$type接口 return $r->implementsInterface($type); }
相关文章推荐
- PHP is_subclass_of函数的一个BUG和解决方法
- 项目调试时候,出现其中用到的一个组件“访问被拒绝”的解决方法(.net的一个BUG)
- Visual C++6.0一个小BUG的解决方法
- BCG库MDI中Tab子框架窗口中的控制条的一个小Bug的解决方法
- 笔记 jquery 的一个bug解决方法积累
- 一个work around方法:解决Android 3.0~4.0下WebView 对锚点链接不支持的bug
- [ASP.NET 2.0]PageParser.GetCompiledPageInstance中的一个Bug及解决方法
- .NET控件ComboBox绑定数据源的一个Bug及解决方法
- 一个IE8 Bug的解决方法以及一些思考
- IOS7版本中GameCenter的一个bug的解决方法
- 曲线解决CMFCPropertyGridCtrl掩码的bug2009年12月30日 星期三 下午 01:24CMFCPropertyGridCtrl这个控件当用到掩码时,会有问题.解决办法用其他掩码替代.下面是一个IP掩码处理方法.代码如下
- 一个NFS缓存管理包的bug导致文件系统满的问题和解决方法
- VS2005中的一个小BUG:关于Dropdownlist无法Datadinding的解决方法。
- 转 VS2005程序运行时出现MSVCP80D.dll not found错误解决方法(VS 2005的一个“Bug”)
- 设置PSPad调用devcpp中的mingw Gcc进行编译;另附PSPad中文版一个BUG的解决方法
- QQ登录没反应解决方法,及新版QQ的一个BUG
- SQL Server 2005 Reporting Services的一个bug及其解决方法
- wxPython 2.8.7.1版本的一个严重BUG和解决方法
- ASP.NET AJAX DropShadow 控件的一个BUG和解决方法(a bug of DropShadow and solution to resolve)
- qt5集成libcurl实现tftp和ftp的方法之三:搭建FTP时,当ftpServer端默认登录的目录不是根目录/时,有一个bug会产生的解决办法