Difference between revisions of "Coding style and standards/Comments"

From Joomla! Documentation

< Coding style and standards
m (Just fixed a misspelling)
(No difference)

Revision as of 04:14, 28 June 2008

Joomla! Comment Standards[edit]

Start Of the Document[edit]

Joomla Coding Documentation Quickstart. This file demonstrates the rich information that can be included in-code and subsequently used to generate documentation for Joomla! components using phpDocumentor.


/**
 * Joomla Coding Documentation Quickstart
 *
 * This file demonstrates the rich information
 * that can be included in-code and subsequently
 * used to generate documentation for Joomla!
 * components using phpDocumentor
 *
 * This is a copy of sample2.php by Greg Beaver of
 * php.net and is provided with phpDocumentor package.
 *
 * @author copy/pasted by Predator < Smiley >
 * @package sample
 */

Add descriptions to included files[edit]

/**
 * Provide a description of 'include' or 'required'
 * and its purpose
 */
include_once 'sample3.php';

Use special declaration for global variables.[edit]

/**
 * Special global variable declaration DocBlock
 * @global integer $GLOBALS['_myvar']
 * @name $_myvar
 */
$GLOBALS['_myvar'] = 6;

Use special declaration for Constants.[edit]

/**#@+
 * Constants
 */
/**
 * first constant
 */
define('testing', 6);
/**
 * second constant
 */
define('anotherconstant', strlen('hello'));

/**#@-*/

Functions or Methods have lots of valuable information you can declare[edit]

/**
 * A sample function docblock
 * @global string document that this function uses $_myvar
 * @staticvar integer $staticvar this is what is returned
 * @param string $param1 name to declare
 * @param string $param2 value of the name
 * @return integer
 */
function firstFunc( $param1, $param2 = 'optional' ){
    static $staticvar = 7;
    global $_myvar;
    return $staticvar;
}

Many special declarations for Classes as well.[edit]

/**
 * The first example class, this is in the same
 * package as declared at the start of file but
 * this example has a defined subpackage
 * @package sample
 * @subpackage classes
 */
class myclass {
    /**
     * A sample private variable, this can be hidden with the --parseprivate
     * option
     * @access private
     * @var integer|string
     */
    var $firstvar = 6;
    /**
     * @link http://www.example.com Example link
     * @see myclass()
     * @uses testing, anotherconstant
     * @var array
     */
    var $secondvar =
        array(
            'stuff' =>
                array(
                    6,
                    17,
                    'armadillo'
                ),
            testing => anotherconstant
        );

    /**
     * Constructor sets up {@link $firstvar}
     */
    function myclass(){
        $this->firstvar = 7;
    }

    /**
     * Return a thingie based on $paramie
     * @param boolean $paramie
     * @return integer|babyclass
     */
    function parentfunc( $paramie ){
        if ($paramie) {
            return 6;
        } else {
            return new babyclass;
        }
    }
}

Here is a child class of the previous example.[edit]

/**
 * @package sample1
 */
class babyclass extends myclass {
    /**
     * The answer to Life, the Universe and Everything
     * @var integer
     */
    var $secondvar = 42;
    /**
     * Configuration values
     * @var array
     */
    var $thirdvar;

    /**
     * Calls parent constructor, then increments {@link $firstvar}
     */
    function babyclass(){
        parent::myclass();
        $this->firstvar++;
    }

    /**
     * This always returns a myclass
     * @param ignored $paramie
     * @return myclass
     */
    function parentfunc( $paramie ){
        return new myclass;
    }
}

Back to the Startpage