View source code (Class7)

<?php
/***************************************************************************
                                  Class7.php
                              -------------------
  
       A PHP4 class used as a reference for Mdoc class usage and test. 

 **************************************************************************/
 
// The class file can start with some code and comments which are just ignored by Mdoc parsing
//if (realpath($_SERVER['SCRIPT_FILENAME']) == __FILE__) die("FILE ACCESS METHOD NOT ALLOWED");

// Declare undocumented parent and interface classes (ignored by Mdoc), useful to check
// this file is parsed correctly by the PHP interpreter
class Parent1 { };

/**
 * Constants can be declared in a group.
 *
 * All constant statements in groups must be on a single line, this is a 
 * format which suits well constants defined as a serie.
 *
 * The inline comments are used to document constant individualy, these
 * subcomments are optional.
 *
 * Use the # inline comment to get subcomment ignored for documenting. 
 *
 * As of PHP5, you'd better declare the class constants using the "const"
 * statement.
 *
 */
define("NL_DOS""\r\n"); // for Windows environment
define("NL_MAC""\r");   // for Mac environment
define("NL_NIX""\n");   // for Unix/Linux environment

/**
 * Constants can be declared with single documenting.
 *
 * Individual constant comment provides long description for every constant,
 * while in block, constant must be declared in single line each.
 *
 */
define("CLAS_ERRMSG_1""A classical error message " .
                        
"which stands onto three " 
                        
"lines to be defined ; and a semi-colon.");

/**
 * Syntactically correct PHP4 class example.
 *
 * Every code documenting block, like this one, has the same format;  
 * the very first line is the "short description", following lines up 
 * to first @info is the "long description". Every @info comment starts 
 * a line with @ (more precisely \n * @ sequence); they are also called
 * active comments (sometimes written @ctive comments).
 *
 * The long description is optional.
 *
 * The long description can have some "display" formating block, such 
 * as the [example] one or the [code] one.
 *
 * For PHP interpreter, the default scope is "public" (so @private 
 * and @protected should not be forgotten in PHP4 classes).
 */
class Class7 extends Parent1 {

/**
 * Integer property.
 *
 * The @type info is mandatory for property documenting.
 *
 * @type int
 */
var $anint 27;

/**
 * Protected and static integer property.
 *
 * This property has an initial value.
 *
 * @type int
 */
var $apsint 0;

/**
 * Mixed property.
 *
 * The "type" comment is required so if 
 * property type isn't sure, use "mixed".
 *
 * @type mixed
 */
var $mixer;

/**
 * Private property.
 *
 * @type object
 */
var $privob;

/**
 * Protected property.
 *
 * @type object
 */
var $protob;

/** 
 * Stack of XHTML formated output string.
 *
 * This property has a "multiline" initial value.
 *
 * @type array
 */
var $multi = array(
               
'next' => "<hr class=\"next\" />",
               
'nl' => "<br />",
               
'trap' => "<b>a ; to trap value parsing</b>",
             );

/**
 * Constructor with PHP4 class syntax.
 *
 * Print an instance creation message.
 * 
 * @public
 * @return (object) an instance of this class
 */
function Class7() {

  echo 
"A new instance has been created.";
}

/**
 * A method with 3 parameters.
 *
 * @protected
 * @param (string) $p1 the first parameter
 * @param (int) $p2 the second parameter
 * @param (string) $p3 the 3rd parameter
 * @return (void)
 */
function m3param($p1$p2$p3) {

  
// Print the 3 parameters
  
echo $p1 "\n";
  echo 
$p2 "\n";
  echo 
$p3 "\n";

  return 
true;
}

/**
 * A method with parameters passed by reference.
 *
 * The function statement presents the & reference char in
 * different places (& $p1 and &$p2).
 *
 * @warning  unstable
 * @private
 * @param (string) $p1 the 1st parameter
 * @param (bool) $p2 the 2nd parameter
 *                   has a two-line comment
 * @return (string) the function result
 */
function mpbyref(& $p1, &$p2) {

  return 
$p1;
}

/**
 * A method with no parameter.
 *
 * @final
 * @private
 * @return (void)
 */
function mnop() {

  print 
get_class_name($this);
}

/**
 * A method with significant documenting comments.
 *
 * Unordered list is a sequence of lines starting all with same -+* bullet,
 * indented on same column at least 2 spaces from margin star, so
 *
 *     - list item 1
 *       on two lines
 *     - second item
 *     - another list item
 *            + sublist it1
 *            + sublist it2
 *                 * subsub A
 *                 * subsub B
 *                 * subsub C
 *     - another ?
 *       again!
 *
 * is translate into an HTML unordered list <ul></ul> (max 8 items by list, 
 * nested up to 4 levels)
 *
 * @warning  unstable
 * @param (int) $p1 the first parameter
 * @param (mixed) $p2 the title of text (string)
 *                    or false (bool) to get all
 * @param (string) $p3 the third parameter
 *                  is commented onto
 *                  several lines
 *                  - list item A
 *                  - list item B
 * @param (array) $p4 the address structured list:
 *                    'name' => a name
 *                    'address' => an address
 *                    'city' => a city name
 * @return (void) if echo flag $p1 is true
 *                a line of comment to test parsing
 *         (string) the printable solution if echo flag is false (default)
 */
function mlotdoc($p1$p2 "a string"$p3 "another string"$p4 = array()) {

  if (
$p1) {
    return;
  } else {
    return 
"whatever";
  }
}

/**
 * Very simple method.
 *
 * @return (void) 
 */
function hello() {

  echo 
"Hello world!";
}
}
?>