当继承的接口用于类型提示时,PHP为什么会发出兼容性错误?

问题描述 投票:0回答:1

请仔细查看以下两个代码块。产生的ErrorWarning放在相应的代码块下面。

在我看来非常有趣!我认为两者应该以相同的方式进行操作,并且它们不应发出任何错误或警告,因为它们在逻辑上对我来说是有效的。

这是PHP bug,还是我缺少什么?

顺便说一句,我相信问题和代码非常简单,不言自明,因此,我不再赘述。 : - )

interface A {}

interface B extends A {}

class X implements A {
    public function test() : A {}
}

class Y extends X implements B {
    public function test() : B {}
}

致命错误:Y :: test()的声明:B必须与X :: test()的声明:A

interface A {}

interface B extends A {}

class X implements A {
    public function test( A $a ) {}
}

class Y extends X implements B {
    public function test( B $b ) {}
}

警告:Y :: test(B $ b)的声明应与X :: test(A $ a兼容)>

请仔细查看以下两个代码块。产生的错误和警告位于相应的代码块下方。对我来说似乎很有趣!我认为两者都应在...

php interface compatibility type-hinting
1个回答
0
投票

我想我自己找到了答案。

© www.soinside.com 2019 - 2024. All rights reserved.