netbeans autocompletion при использовании singleton для извлечения объекта вместо нового оператора?

когда я использую «новый» оператор для создания экземпляра класса, netbeans не имеет проблемы с автозаполнением элементов объекта.

$instance = new Singleton(); $instance-> // shows test() method 

но когда я использую singleton для извлечения объекта, он не может автозаполнять члены в полученном объекте.

код getInstance выглядит следующим образом:

 public function test() { echo "hello"; } public static function getInstance() { if ( ! is_object(self::$_instance)) { self::$_instance = new self(); self::$_instance->initialize(); } return self::$_instance; } 

поэтому я использую:

 $instance = Singleton::getInstance(); $instance-> // no autocompletion! 

У кого-нибудь есть такая же проблема?

как мне обойти это?

благодаря!

Вы можете добавить комментарий, чтобы указать, какой тип $instance , перед его назначением:

 /* @var $instance Singleton */ $instance = Singleton::getInstance(); 

И вы получите автозаполнение:

http://img.ruphp.com/php/question-2796730-netbeans.png

(Протестировано с недавней ночной сборкой небедов)


Другим решением было бы добавить docblock в объявление вашего метода getInstance() , чтобы указать, что он возвращает экземпляр класса Singleton :

 /** * @return Singleton */ public static function getInstance() { } 

И тогда вы также получите автозаполнение:

http://img.ruphp.com/php/question-2796730-netbeans-2.png