Code Completion for private/protected member variables when using magic __get()

code-completion, eclipse, php, zend-studio

Solution

Code Completion for Magic Methods can be achieved by using the @property and @method annotation in the DocBlock of the class (not in the Method Docs).

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

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

Note that there is no correlation between the actual code and the annotation. Zend Studio will show whatever you set for `@property`, regardless of this property existing. It will also not check if there actually is a magic method available.

Problem

How do I setup code completion to work on Zend Studio (or any Eclipse based IDE) when working with a class that has private or protected member variables WITHOUT resorting to a bunch of Getter's OR setting the member vars as public. For example: ``` 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. ```

Original source