gpt4 book ai didi

php - 这是一个 php 错误 : subclasses must declare private methods with the same signature as in parent class

转载 作者:可可西里 更新时间:2023-11-01 13:18:37 25 4
gpt4 key购买 nike

我正在使用 php 5.3,是的,有一个 bug open为此,但有些人认为这不是错误,这让我感到奇怪。

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

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

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

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

最佳答案

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

PHP 的 visibility rules清楚地表明 child 无法看到其 parent 的私有(private)成员,我怀疑这对任何人来说都是如此令人惊讶。如果 child 看不到它 parent 的方法,我不明白它怎么有义务遵守他们的定义。

我个人认为该错误被标记为伪造但没有任何解释为什么它不是真正的缺陷(因为它不明显而且我在文档)有点错误,但是是的。除此之外,我在 zend_compile.c 中的意见线 2669 |实际上应该如下所示:

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

...这将避免在父方法被标记为私有(private)时弹出错误。考虑到您始终可以选择不记录 E_STRICT,并且它不会真正产生任何负面影响,我认为这并不是什么大问题。我绝对不明白这怎么可能是故意的,但我也不是 PHP 引擎开发人员。

关于php - 这是一个 php 错误 : subclasses must declare private methods with the same signature as in parent class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3258523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com