PHP is_subclass_of函数的一个BUG和解决方法
2015-01-24信息快讯网
这篇文章主要介绍了PHP is_subclass_of函数的一个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 参数(类名)。
使用例子:
#判断$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); }
用 Composer构建自己的 PHP 框架之设计 MVC
用 Composer构建自己的 PHP 框架之构建路由
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
用 Composer构建自己的 PHP 框架之基础准备
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
thinkphp中html:list标签传递多个参数实例
Linux下安装PHP MSSQL扩展教程
PHP正则表达式 /i, /is, /s, /isU等介绍
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
php中__destruct与register_shutdown_function执行的先后顺序问题
PHP中使用Session配合Javascript实现文件上传进度条功能
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
自定义session存储机制避免会话保持问题
PHP JSON出错:Cannot use object of type stdClass as array解决方法
PHP的反射类ReflectionClass、ReflectionMethod使用实例
PHP错误Cannot use object of type stdClass as array in错误的解决办法
在PHP中使用X-SendFile头让文件下载更快
PHP中数组的分组排序实例
php_screw安装使用教程(另一个PHP代码加密实现)
PHP Curl出现403错误的解决办法
PHP的foreach中使用引用时需要注意的一个问题和解决方法
神盾加密解密教程(一)PHP变量可用字符
浅谈discuz密码加密的方式
ECMall支持SSL连接邮件服务器的配置方法详解
PHP小技巧之JS和CSS优化工具Minify的使用方法
php开启openssl的方法
PHP中spl_autoload_register()和__autoload()区别分析
PHP中把stdClass Object转array的几个方法
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
codeigniter框架The URI you submitted has disallowed characters错误解决方法
php中session过期时间设置及session回收机制介绍
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
从PHP的源码中深入了解stdClass类
理解PHP中的stdClass类
PHP反射类ReflectionClass和ReflectionObject的使用方法
php class类的用法详细总结