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

时间:2010-09-28 16:04:48

标签: php eclipse zend-studio code-completion

在处理具有私有或受保护成员变量的类时,如何设置代码完成以在Zend Studio(或任何基于Eclipse的IDE)上工作,而不需要使用一堆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 个答案:

答案 0 :(得分:24)

魔术方法的代码完成可以通过在类的DocBlock中使用@property@method注释来实现(不在方法文档中)。

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

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

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

Code Completion in Zend Studio with @property annotation