Завершение кода для закрытых / защищенных переменных-членов при использовании magic __get ()

Как настроить завершение кода для работы в Zend Studio (или любой IDE на основе Eclipse) при работе с классом, имеющим закрытые или защищенные переменные-члены, БЕЗ обращения к группе ИЛИ Getter, устанавливающей переменные-члены как открытые.

Например:

class Dog {

    protected $bark = 'woof!';

    public function __get($key) {
        if (isset($this->$key)) {
            return $this->$key;
        }
    }

}

$Dog = new Dog();
echo $Dog->bark; // <-- I want the IDE to "know" that bark is a property of Dog.

Ответы на вопрос(1)

Решение Вопроса

@имущество а также@method аннотация в DocBlock класса (не в методе Docs).

/**
 * @property string bark
 */
class Dog {
    /* ... */
}

$Dog = new Dog();
echo $Dog-> // will autocomplete now

Обратите внимание, что нет никакой корреляции между фактическим кодом и аннотацией. Zend Studio покажет все, на что вы настроены@propertyнезависимо от того, существует ли эта собственность. Он также не будет проверять, есть ли на самом деле магический метод.

 Matthieu Napoli01 июн. 2011 г., 12:55
Это работает с Eclipse тоже?
 Gordon01 июн. 2011 г., 13:01
@Matthieu, это должно работать и с Eclipse. Но не приставай ко мне.
 Dustin Graham16 апр. 2013 г., 07:22
Да, это работает в Eclipse PDT. Я знал, что это возможно, но искал это везде. Аннотация @method к классу - удивительное решение для причудливых абстрактных / унаследованных методов.
 qrazi19 мар. 2013 г., 09:33
Просто подтверждение этого также работает на Netbeans 7.2

Ваш ответ на вопрос