PhpStorm,Laravel和autocompletition

时间:2017-06-05 22:37:56

标签: php phpstorm

我在run()类中有一个方法TreeGen

class TreeGen implements TreeGenerable{

 public function run()
 {
     ...
     $this->pushEmptyGroupsToTree($numFighters);
     ...
 }
}

Thing $this可能是tree gen的4个子类之一,所有这些方法都实现了pushEmptyGroupsToTree的不同版本。

但PhpStorm只在TreeGen类中寻找pushEmptyGroupsToTree,当然,我没有在超类中定义它,所以它没有检测到它。

有没有办法让他识别子类方法?

3 个答案:

答案 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)

在这种情况下,您必须使用PHPDoctype hinting

不要忘记:

country_code