php方法重写:Declaration of should be compatible with that_

上传人:一** 文档编号:24874147 上传时间:2021-07-15 格式:DOCX 页数:5 大小:12.79KB
返回 下载 相关 举报
php方法重写:Declaration of should be compatible with that__第1页
第1页 / 共5页
php方法重写:Declaration of should be compatible with that__第2页
第2页 / 共5页
php方法重写:Declaration of should be compatible with that__第3页
第3页 / 共5页
点击查看更多>>
资源描述
php方法重写:Declaration of should be compatible with that_ 假如你碰到php 方法重写,参数不同,报错: Declaration of should be compatible with that这种问题不防进入参考一下解决方法吧。 上网搜索了一下,发觉很多帖子基本都抄的一样,说什么这是由于 php5.3版本后,要求继承类必需在父类之后定义,假如父类定义在前,继承类在后,就不会消失这个错误。尤其是上面还煞有介事的给出了正反例: 代码如下: ?php / this code does trigger a strict message error_reporting( E_ALL | E_STRICT ); class cc extends c function test() return null; class c function test( $a ) return 1; $cc = new cc(); ? ?php / this code does NOT trigger a strict message error_reporting( E_ALL | E_STRICT ); class c function test( $a ) return 1; class cc extends c function test() return null; $cc = new cc(); ? 并且商量了出错的状况多半是由于用_autoload()对类进行自动的include,导致基类的定义在后面,子类定义在前面。 我看了下自己的代码,虽然的确也用到了autoload,但是都是显式的先导入了几个基类,并不存在这样的状况,而且将上面的正反例子试了一下,都会消失E_STRICT的警告。 再看例子 代码如下: ?php abstract class A / 方法无参数 public static function foo() echo bar; abstract class B extends A / 方法有参数 public static function foo($str) echo $str; ? 闪电似的 如上面的代码:类A中的foo方法无参数,类B在继承A后重写foo方法时加入了参数,因此会产生一个类似下面E_STRICT级别的警告: Strict standards: Declaration of . should be compatible with that of 代码如下: ?php abstract class A / 方法无参数 public static function foo() echo bar; abstract class B extends A / 方法有参数 public static function foo($str = NULL) echo $str; ? 类B在重写foo方法时为新加入的参数指定一个默认值即可 真正缘由: 其实假如子类重写方法的参数和基类不一样,只要给参数个默认值,使得编译器认为参数可以为空,保持重写方法与基类方法的函数签名相同就可以了。 常常用JAVA的同学确定知道,在JAVA或者C+中,重写方法的函数签名本应当就和基类函数是全都的,我认为这也是符合自然规律的,由于override原来就是掩盖的意思嘛,既然掩盖了,那么就应当和原函数全都,不然怎么能“盖”的住呢并且方法的重写多用在重写虚函数或者更明白的说就是重写接口的函数,假如重写的时候函数签名都不全都了,还要接口干嘛呢。 所以PHP的新版本中,我觉得定义这个E_STRICT的警告错误是很有用处的,要提示程序员自己的重写方法究竟对不对。 最终还是鄙视一下上面那些抄来抄去的帖子,假如某个语言连基类和子类定义的挨次都不能打乱,说明这个编译器特别有问题了,明显是bug。 更多信息请查看IT技术专栏 .
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!