无法使用全局对象在PhpStorm中获取方法/属性完成提示

时间:2017-02-15 21:45:13

标签: php phpstorm

我希望这可行,但它不是......我做错了什么阻止了PhpStorm为全局对象$G_myobject提供自动完成的类成员提示? IDE的版本是2016.3.2

file1.php

namespace sysbase;

$a = true;
if ( $a ) {
    $G_myobject = new SomeClass();
}

file2.php

namespace sysbase;
require_once file1.php

$b = true;
global $G_myobject;     //without this line, the IDE complains 'unknown variable'
if ( $b ) {
    $G_myobject-> ....  //not getting any class member hints here, in the IDE...
}

2 个答案:

答案 0 :(得分:0)

因为phpStorm无法处理 if 语句 if 中的对象,所以只能通过phpStorm在if范围内看到。所以你应该从 if 子句中初始化你的对象。请尝试使用以下代码获取file1.php它应该可以使用

$G_myobject = new SomeClass();

$a = true;
if ( $a ) {
    $G_myobject = new SomeClass();
}

答案 1 :(得分:0)

因为PHPStorm不知道对象/数据类型$G_myobject是什么(在file2.php的上下文中),所以它不知道要提供什么提示。

您可以像'Ali insan Soyaslan'建议的那样做,或者您必须使用/** @var Classname $variableName */注释符号键入提示您的变量,以便PHPStorm知道它是什么。在您的情况下,它将如下:

namespace sysbase;
require_once file1.php

$b = true;

/** @var SomeClass $G_myobject */
global $G_myobject;

if ($b) {
    $G_myobject-> ....  //should now get hints
}