扩展类中的PHP接口未被识别为实例

时间:2018-11-18 22:49:41

标签: php oop interface extends instanceof

我有一个抽象类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()只是函数返回数组的示例。

1 个答案:

答案 0 :(得分:1)

getX()方法不返回任何数据,因此$x的值为null;,以拥有I接口的对象实例,您需要将return $this放在{ {1}}方法。