PhpStorm、Laravel和自动完成
我在PhpStorm、Laravel和自动完成,php,phpstorm,Php,Phpstorm,我在TreeGen类中有一个方法run(): class TreeGen implements TreeGenerable{ public function run() { ... $this->pushEmptyGroupsToTree($numFighters); ... } } 问题是,$this可能是tree gen的4个子类之一,所有这些方法都实现了不同版本的pushEmptyGroupsToTree 但是PhpStorm只在TreeGen
TreeGen
类中有一个方法run()
:
class TreeGen implements TreeGenerable{
public function run()
{
...
$this->pushEmptyGroupsToTree($numFighters);
...
}
}
问题是,$this
可能是tree gen的4个子类之一,所有这些方法都实现了不同版本的pushEmptyGroupsToTree
但是PhpStorm只在TreeGen类中查找pushEmptyGroupsToTree
,当然,我没有在超类中定义它,所以它没有检测到它
有没有办法让他识别子类方法?IDE的行为是正确的。您要么需要声明这个类抽象,要么在这里或在超类中声明抽象方法 更新 可以从
TreeGen的实例调用TreeGen的run
方法
$treeGen = new TreeGen;
$treeGen->run();
这将导致调用未定义的方法出现错误
如果不应该直接调用TreeGen
,那么它应该是抽象的。IDE的行为正确。您要么需要声明这个类抽象,要么在这里或在超类中声明抽象方法
更新
可以从TreeGen的实例调用TreeGen的run
方法
$treeGen = new TreeGen;
$treeGen->run();
这将导致调用未定义的方法出现错误
如果TreeGen
不应该直接调用,则它应该是抽象的。如果您不想直接使用TreeGreen
,请声明它是抽象的:
abstract class TreeGen implements TreeGenerable {
// ...
如果需要子类声明该方法,请在超类中将其声明为抽象:
abstract class TreeGen implements TreeGenerable
{
// ...
abstract public function pushEmptyGroupsToTree($numFighters);
}
现在,如果不实现pushEmptyGroupsToTree
,您就无法扩展TreeGen
,如果您不想直接使用TreeGen
,请将其声明为抽象:
abstract class TreeGen implements TreeGenerable {
// ...
如果需要子类声明该方法,请在超类中将其声明为抽象:
abstract class TreeGen implements TreeGenerable
{
// ...
abstract public function pushEmptyGroupsToTree($numFighters);
}
现在,如果不实现pushEmptyGroupsToTree
,您就无法扩展TreeGen
。对于这种情况,您必须使用和
别忘了:
ide-helper:generate Generate a new IDE Helper file.
ide-helper:meta Generate metadata for PhpStorm
ide-helper:models Generate autocompletion for models
在这种情况下,您必须使用和
别忘了:
ide-helper:generate Generate a new IDE Helper file.
ide-helper:meta Generate metadata for PhpStorm
ide-helper:models Generate autocompletion for models
即将发布的(2017.2)版本将包括改进的子->父关系检测。您可以在最新的EAP中查看:即将发布的(2017.2)版本将包括改进的子->父关系检测。您可以在最新的EAP中进行检查: