oop — интерфейс PHP в расширенном классе не распознается как экземпляр

У меня есть абстрактный класс 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() это просто пример для функции, возвращающей массив.

0

Решение

getX() метод не возвращает никаких данных, поэтому значение $x является null; чтобы иметь экземпляр объекта интерфейса I вам нужно поставить return $this в getX() метод.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector