Intellij IDEA - 返回子类时找不到方法

时间:2018-02-19 09:05:24

标签: php intellij-idea

我使用Intellij IDEA进行php开发。

class A {
}

class B extends A {

  public function myFunc() {}

}

class C {

  /**
     * Return class object
     *
     * @return A
     */
  public function get() {
    return $a_or_child_a_class_from_some_list;
  }

}

$cObject = new C();
$cObject
  ->get()
  ->myFunc();// Intellij say that method not found. How pretty resolve this problem?

我在上面的代码中说明当C类基于A类返回对象时的情况。我怎么说Intellij在这种情况下我使用B类 - > myFunc()方法。是的,我可以在@reuturn课程中枚举,但它不是解决方案。也可以用B类/*@type B*/来描述$ cObject-> get(),但它并不好。

你能建议什么?

1 个答案:

答案 0 :(得分:1)

嗯,显然你的班级A没有定义方法myFunc(),那么为什么IntelliJ会解析方法名?

您应该将返回类型描述为B,在myFunc()中定义抽象方法class A或(在我看来最好的选项)定义具有方法签名的接口并声明接口作为get()方法的返回类型。

修改 如果定义抽象方法,那么该类也必须是抽象的。因此,在您的情况下,如果您不想将A声明为抽象,则只需定义一个空体的方法myFunc()