Я разрабатывал ORM и в настоящее время сталкиваюсь с этой ошибкой при тестировании.
Declaration of ClassA::setB() should be compatible with that of SuperClass::setB()
Мой код выглядит примерно так.
class SuperClass() {
protected $b;
public function setB(ClassB $b) {
$this->b = $b;
}
}
class ClassB {}
class ChildB extends ClassB {}
class ClassA extends SuperClass {
public function setB(ChildB $b) {
parent::setB($b);
}
}
Это исключительное поведение.Я думаю, что ClassA перегружает метод setB класса SuperClass, но ClassA::setB
все еще совместим с SuperClass::setB
, потому что class ChildB
является дочерним классом ClassB
.
Или перегрузка в любом случае просто запрещена.