我有一个抽象类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 :(得分:1)
getX()
方法不返回任何数据,因此$x
的值为null;
,以拥有I接口的对象实例,您需要将return $this
放在{ {1}}方法。