我使用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()但它并不好。
你能建议什么?
好吧,显然你的类A
没有定义方法myFunc()
,那么为什么IntelliJ会解析方法名?
您应该将返回类型描述为B
,在myFunc()
中定义抽象方法class A
或(在我看来最好的选项)定义具有方法签名的接口,并将接口声明为get()
方法的返回类型。
编辑:如果定义一个抽象方法,那么该类也必须是抽象的。所以在你的情况下,如果你不想将A
声明为抽象,你可以简单地用空体定义一个方法myFunc()
。