У меня есть абстрактный класс A
который расширен классом B
который реализует интерфейс I
,
abstract class A {
public function test(){
return $this->getX();
}
abstract protected function getX();
}
class B extends A implements I {
public function Test() {
$x = this->getX();
if (!$x instanceof I) {
throw new RuntimeException("not an instance of I");
}
}
public function getX() {
$aCoordinates = array('x' => 1, 'y' => 4, 'z' => 5);
return $aCoordinates;
}
}
interface I {}
RuntimeException
всегда брошен, несмотря на $x
это пример I
, У кого-нибудь есть идея, почему это происходит?
getX()
возвращает массив. getX()
это просто пример для функции, возвращающей массив.
getX()
метод не возвращает никаких данных, поэтому значение $x
является null;
чтобы иметь экземпляр объекта интерфейса I вам нужно поставить return $this
в getX()
метод.
Других решений пока нет …