Перегрузка метода PHP - PullRequest
       12

Перегрузка метода PHP

0 голосов
/ 21 февраля 2011

Я разрабатывал 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.

Или перегрузка в любом случае просто запрещена.

1 Ответ

1 голос
/ 21 февраля 2011

В PHP параметры перегруженного метода должны быть идентичны. Вы можете скрыть ошибку, повернув STRICT сообщение об ошибке , в противном случае вам нужно сделать параметры идентичными. Однако, вероятно, в ваших интересах исправить параметры, чтобы обеспечить прямую совместимость с новыми версиями PHP.

...