请仔细查看以下两个代码块。产生的Error和Warning放在相应的代码块下面。
在我看来非常有趣!我认为两者应该以相同的方式进行操作,并且它们不应发出任何错误或警告,因为它们在逻辑上对我来说是有效的。
这是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兼容)>
请仔细查看以下两个代码块。产生的错误和警告位于相应的代码块下方。对我来说似乎很有趣!我认为两者都应在...
我想我自己找到了答案。