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

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

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

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

код 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!

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

как я работаю вокруг этого?

спасибо!

6
задан never_had_a_name 9 May 2010 в 05:35
поделиться

1 ответ

Можно добавить комментарий, указывающий, к какому типу относится $instance, перед присвоением :

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


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


(source: pascal-martin. fr)

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



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

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

}


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


(источник: pascal-martin. fr)

12
ответ дан 9 December 2019 в 20:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: