我使用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(),但它并不好。
你能建议什么?
答案 0 :(得分:1)
嗯,显然你的班级A
没有定义方法myFunc()
,那么为什么IntelliJ会解析方法名?
您应该将返回类型描述为B
,在myFunc()
中定义抽象方法class A
或(在我看来最好的选项)定义具有方法签名的接口并声明接口作为get()
方法的返回类型。
修改强>
如果定义抽象方法,那么该类也必须是抽象的。因此,在您的情况下,如果您不想将A
声明为抽象,则只需定义一个空体的方法myFunc()
。