Пожалуйста, обратите внимание на следующие два блока кода. Ошибка и Предупреждение * Произведенные размещены под соответствующим кодовым блоком.
Мне кажется очень интересным ! Я думаю, что оба должны действовать одинаково, и они не должны выдавать никаких ошибок или предупреждений, поскольку они кажутся мне логически действительными.
Это ошибка PHP , или я пропускаючто-то?
Кстати, я считаю вопрос и код очень простым и не требующим пояснений, поэтому я не буду вдаваться в подробности. : -)
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