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.
__get() is utilized for reading data from inaccessible properties.
Magic methods are special methods which override PHP's default's action when certain actions are performed on an object. All methods names starting with __ are reserved by PHP. Therefore, it is not recommended to use such method names unless overriding PHP's behavior.
__set : __set is called when object of our class attempts to set value of the property which is really inaccessible or unavailable in our class.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With