加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

这是一个php错误:子类必须使用与父类相同的签名声明私有方法

发布时间:2020-05-26 16:01:58 所属栏目:PHP 来源:互联网
导读:我正在使用php 5.3,是的,有一个 bug open,但有些人认为这不是一个bug,这让我很奇怪. abstract class A{ private function bobo(array $in){ //do something }}class B extends A{ private function bobo($shmoo,$shmaa){

我正在使用php 5.3,是的,有一个 bug open,但有些人认为这不是一个bug,这让我很奇怪.

abstract class A{
   private function bobo(array $in){
     //do something
   }
}

class B extends A{
   private function bobo($shmoo,$shmaa){
     //do something
   }
}

这会引发错误.不应该继承忽略私有方法吗?!

‘Declaration of B::bobo() should be
compatible with that of A::bobo()’

请注意,错误报告略有偏差,因为只要您的错误级别为E_STRICT,PHP就会记录此消息(或者,最近,无论您的错误级别如何,只要您设置了自定义错误处理程序).

PHP的visibility rules清楚地表明,孩子缺乏看到其父母的私人成员的能力,我怀疑这对任何人来说都是令人惊讶的.如果孩子看不到其父母的方法,我不明白它如何有责任服从他们的定义.

我个人认为这个bug被标记为虚假而没有任何解释为什么它不是一个真正的缺陷(因为它不明显,我在文档中找不到任何提及它)有点不对,但是是的.除此之外,我在zend_compile.c的第2669条意见应该如下:

} else if (child->prototype &&
    (EG(error_reporting) & E_STRICT || EG(user_error_handler))) {

…当父方法被标记为私有时,这将避免错误弹出.鉴于你总是可以选择不记录E_STRICT,并且它并没有真正对任何东西产生负面影响,我想这并不是什么大不了的事.我绝对不知道它是如何故意的,但我也不是PHP引擎开发人员.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读