I use a base.class that most classes extend from. That class uses the lovely
Magic Methods for overloading __get() and __set()
http://php.net/manual/en/language.oop5.magic.php
 
However (in Zend Studio for example) when I try to auto-assist a property
$foo I don't see that it has a get() or set() method.
 
I'd like to see something like $this->get_foo() or $this->set_foo()  and
also if possible have them show up in the Outline tab window.
 
Then I randomly stumbled upon this PHPDoc  @ method tag and my whole world
is brighter today than it has been for the past, oh let's say DECADE!
http://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_tags
.method.pkg.html
or @property too.
http://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_tags
.property.pkg.html
 
*giddy!* 
(now I just have to go back through all my code and update the class
documentation headers everywhere)
 
<?php
/**
* This is an example of how to use PHPDoc to describe the magic __get() and
__set()
* so that Zend Studio / Eclipse / Other IDEs can utilize the methods that
don't technically exist.
*
* @method    void set_name() set_name(string $name) magic setter for $name
property
* @method    string get_name() get_name() magic getter for $name property
*
* @link
http://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_tags
.method.pkg.html
* @link
http://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_tags
.property.pkg.html
*/
class foo
{
       /**
       * @var string $name the description of $name goes here
       */
       protected $name;
 
       public function __construct($id = NULL)
       {
       }
}
 
$myobj = new foo();
 
#### Put your cursor after the -> and hit CTRL+SPACE.                ####
#### Notice how you have "magic" get_name() and set_name($name)      ####
#### appearing and also in the Eclipse "Outline" pane                ####
 
$myobj->
 
####                 You're welcome.                                 ####
?>

Reply via email to