我在run()
类中有一个方法TreeGen
:
class TreeGen implements TreeGenerable{
public function run()
{
...
$this->pushEmptyGroupsToTree($numFighters);
...
}
}
Thing $this
可能是tree gen的4个子类之一,所有这些方法都实现了pushEmptyGroupsToTree
的不同版本。
但PhpStorm只在TreeGen类中寻找pushEmptyGroupsToTree
,当然,我没有在超类中定义它,所以它没有检测到它。
有没有办法让他识别子类方法?
答案 0 :(得分:2)
IDE表现正常。你需要声明这个类抽象,或者在这里或超类中声明抽象方法。
<强>更新强>
run
的{{1}}方法可以从TreeGen
Treegen
这将导致调用未定义的方法错误。
如果不应该直接调用$treeGen = new TreeGen;
$treeGen->run();
,那么它应该是抽象的。
答案 1 :(得分:1)
如果您不希望直接使用TreeGreen
,请将其声明为抽象:
abstract class TreeGen implements TreeGenerable {
// ...
如果您需要子类声明该方法,请在超类中将其声明为abstract:
abstract class TreeGen implements TreeGenerable
{
// ...
abstract public function pushEmptyGroupsToTree($numFighters);
}
现在你无法扩展TreeGen
而不实施pushEmptyGroupsToTree
答案 2 :(得分:0)