2017-02-15 10 views
0

Я ожидал, что это сработает, и это не так ... Я делаю что-то неправильно, что предотвращает предоставление PhpStorm автозаполняющих членов класса для глобальных объект $G_myobject? Версия IDE является 2016.3.2Невозможно получить подсказку завершения метода/атрибута в PhpStorm, с глобальным объектом

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... 
} 

ответ

0

Поскольку PhpStorm не может обработать если заявления вашего объекта в если, будет видна только внутри области if с помощью phpStorm. Поэтому вы должны начать свой объект из , если. Пожалуйста, попробуйте этот код для file1.php он должен работать

$G_myobject = new SomeClass(); 

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

Поскольку PhpStorm не имеет представления о том, какой тип $G_myobject объект/данные (в контексте file2.php) он не знает, что намекает, чтобы обеспечить ,

Вы можете либо сделать так, как предлагает «Ali insan Soyaslan», либо вам нужно набрать подсказку вашей переменной, используя примечание комментария , чтобы PHPStorm знал, что это такое. В вашем случае это будет следующим:

namespace sysbase; 
require_once file1.php 

$b = true; 

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

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