Possible Duplicate:
Is there a standard for documenting GET/POST parameters?
Trying to figure out the best way to document request parameters via phpdoc in a manner that makes sense. Specifically, I've got some Zend Framework controller actions that receive parameters via GET/POST, but aren't functional params. Does this make sense?
/**
 * Display a pagination/grid list of rows.
 *
 * @param string $_GET['order']  What field to sort on
 * @param string $_GET['dir']    Direction to sort; either ASC|DESC
 * 
 * @return void
 */
public function listAction()
{
    $order = $this->_request->order;
    ...
If I generated docs for this method, there wouldn't be an indication that "order" and "dir" can be passed via a url string to this method. Would it make more sense to just do
@param string $order
Should I use @var instead?
Thoughts welcome.
I would avoid mucking with @param.
Also you could make a _validate() method to make it obvious in the code. Then you could use _validate() to create a seam for unit testing.
/**
 * Display a pagination/grid list of rows.
 *
 * Requires $_REQUEST['order'] and $_REQUEST['dir']
 * 
 * @return void
 */
public function listAction()
{
    list($order, $dir) = $this->_validate($this->_request);
    ...
private function _validate($request) {
    if (!$request->order)
         throw new InvalidArgumentException('"Order" must be in request');
    if (!$request->dir)
         throw new InvalidArgumentException('"Dir" must be in request');
    // maybe clean vars???
    //Zend_Filter_Numeric.....
    return array($request->order, $request->dir);
} 
                        I generally either use what you proposed, or put a simple non-phpdoc comment when the code is too long, or just do nothing.
Between those three, your solution is the best, I believe.
Only one thing that you should check : does this render nicely when you are generating the phpdoc ?
In theory, as phpdoc uses the names you give in the doc-block, I suppose it should...
If yes... well, I don't see a better way ; not the need for a better way : I don't think you could do anything more clean/readable/understandable than this.
I do not like the 
@param string $order
idea : nothing show the $order should be given in $_GET and is not a "real method parameter" ; so I'd rather avoid this syntax.
I never user @var for parameters, btw : only for variables, when I feel the need of documenting them (which is not often ; at least for short methods / parts of code)
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