phpDocumentor

PHPDocumentor ist die Standardlösung für die Erzeugung von Entwicklerdokumentation aus PHP-Quelltexten heraus. Hierbei werden Formatierungsanweisungen in den Quelltext-Kommentaren verwendet, um beispielsweise Typ und Anzahl der Parameter einer Methode sowie deren Aufgabe und Rückgabewert zu dokumentieren. Diese Informationen werden von phpDocumentor aus dem Quelltext extrahiert und in unterschiedlichen Formaten aufbereitet.

Dank des PEAR-Installers gestaltet sich die Installation von phpDocumentor gewohnt einfach (Abbildung 13.1).

Abbildung 13.1. Installation von phpDocumentor

pear install --alldeps phpDocumentor


phpDocumentor unterstützt die Dokumentation von Inklusionsanweisungen, Konstanten, Funktionen und Klassen sowie deren Instanzvariablen und Methoden. phpDocumentor erwartet die Dokumentation eines Codeelementes in einem Kommentar, der direkt vor dem Element in DocBlock-Notation (Beispiel 13.1) zu schreiben ist. Ein DocBlock ist ein erweiterter PHP-Kommentar im C++-Stil. Er wird mit /** eingeleitet. Ferner beginnt jede weitere Zeile mit einem *.

Beispiel 13.1: Ein DocBlock

<?php
/**
 *
 */
?>


Tabelle 13.1 zeigt die wichtigsten Tags, die phpDocumentor unterstützt.

Tabelle 13.1. Die wichtigsten Tags von phpDocumentor

TagBeschreibung
@abstract, @final und @staticDokumentation von Klassen oder Methoden als abstrakt, final oder statisch.
@access {public|protected|private}Sichtbarkeit des dokumentierten Codeelementes.
@param Typ $name BeschreibungDokumentation eines Parameters einer Funktion oder Methode.
@return Typ BeschreibungDokumentation des Rückgabewertes einer Funktion oder Methode.
@author und @copyrightDokumentation von Autor und Urheberrechtsinformation für das Codeelement.
@seeFügt einen Verweis auf die Dokumentation eines anderen Codeelementes ein.
@versionDokumentiert die Version des Codeelementes.
@sinceDokumentiert, seit welcher Version das Codeelement existiert.
@deprecatedMarkiert das dokumentierte Codeelement als ausgemustert.


Beispiel 13.2 zeigt den Quelltext einer Klasse ohne Codekommentare.

Beispiel 13.2: Eine Klasse ohne Dokumentationskommentare

<?php
class Klasse {
  private $variable;
 
  public function setzeVariable($parameter) {
    $this->variable = $parameter;
 
    return $this->variable;
  }
}
?>


Abbildung 13.2 zeigt den Aufruf von phpDocumentor von der Kommandozeile aus. Der Parameter -t . setzt das Ausgabeverzeichnis auf das aktuelle Verzeichnis, über -f Klasse.php legen wir die Eingabedatei fest.

Abbildung 13.2. Aufruf von phpDocumentor

phpdoc -t . -f Klasse.php


Abbildung 13.3 zeigt die von phpDocumentor generierte Dokumentation für unsere Klasse. Obwohl diese noch keine Codekommentare enthält, hat phpDocumentor bereits einige Informationen aus dem Code extrahieren können. So erhalten wir beispielsweise die Information, dass die Methode setzeVariable() als public deklariert ist und keinen Rückgabewert liefert.

Abbildung 13.3. Von phpDocumentor erzeugte Dokumentation für eine Klasse ohne Codekommentare

Von phpDocumentor erzeugte Dokumentation für eine Klasse ohne Codekommentare


Wir fügen nun sukzessiv Codekommentare zum Quelltext der Klasse hinzu. In Beispiel 13.3 ist der Codekommentar-Block für die Klassendeklaration zu sehen. Hier geben wir eine Beschreibung zur Aufgabe der Klasse sowie ein Beispiel für ihre Verwendung an. Schließlich machen wir Angaben darüber, wer die Klasse programmiert hat und zu welchem Paket und Unterpaket sie gehört.

Beispiel 13.3: Dokumentationskommentar für eine Klasse

<?php
/**
 * Eine Klasse für die Demonstration von phpDocumentor.
 *
 * <code>
 * <?php
 * require_once 'Klasse.php';
 *
 * $objekt = new Klasse;
 * $objekt->setzeVariable('test');
 * ?>
 * </code>
 *
 * @author      Sebastian Bergmann <sb@sebastian-bergmann.de>
 * @package     PSMP5
 * @subpackage  phpDocumentor
 */
class Klasse {
  // ...
}
?>


Beispiel 13.4 zeigt den Codekommentar für die Instanzvariable $variable. Durch die Angabe von @var string dokumentieren wir hierbei für phpDocumentor, dass die Instanzvariable vom Typ String ist.

Beispiel 13.4: Dokumentationskommentar für eine Instanzvariable

<?php
class Klasse {
  /**
  * Eine Instanzvariable.
  *
  * @var    string
  * @access private
  */
  private $variable;
 
  // ...
}
?>


Beispiel 13.5 zeigt den Codekommentar für die Methode setzeVariable(). Mit @param string $parameter und @return string dokumentieren wir Typ und Zweck des Parameters sowie des Rückgabewertes.

Beispiel 13.5: Dokumentationskommentar für eine Methode

<?php
class Klasse {
  // ...
 
  /**
  * Setzt die Variable 'variable' auf den übergebenen
  * Parameter.
  *
  * @param  string  $parameter Parameter, auf den die
  *                 Variable 'variable' gesetzt werden
  *                 soll.
  * @return string  Der Wert, auf den die Variable
  *                 'variable' gesetzt wurde.
  * @access public
  */
  public function setzeVariable($parameter) {
    $this->variable = $parameter;
 
    return $this->variable;
  }
}
?>


Dank der Codekommentare ist phpDocumentor nun in der Lage, ausführlichere Code-Dokumentation für unsere Klasse zu erzeugen (Abbildung 13.4).

Abbildung 13.4. Von phpDocumentor erzeugte Dokumentation für eine Klasse mit Codekommentare

Von phpDocumentor erzeugte Dokumentation für eine Klasse mit Codekommentare