使用magic __get()时私有/受保护成员变量的代码完成

jle*_*lee 12 php eclipse zend-studio code-completion

在处理具有私有或受保护成员变量的类时,如何设置代码完成以在Zend Studio(或任何基于Eclipse的IDE)上工作,而不使用一堆Getter或将成员变量设置为public.

例如:

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.
Run Code Online (Sandbox Code Playgroud)

Gor*_*don 25

代码完成的魔术方法可以使用来实现@property@method注释中的类(而不是在方法文档)的文档块.

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

$Dog = new Dog();
echo $Dog-> // will autocomplete now
Run Code Online (Sandbox Code Playgroud)

请注意,实际代码和注释之间没有相关性.@property无论现有属性如何,Zend Studio都会显示您设置的内容.它也不会检查是否有可用的魔法.

使用@property注释在Zend Studio中完成代码

  • 只是确认这一点也适用于Netbeans 7.2 (2认同)