когда я использую «новый» оператор для создания экземпляра класса, 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() { }
И тогда вы также получите автозаполнение: