Benutzer-Werkzeuge

Webseiten-Werkzeuge


php:phpdoc

PHPDoc

Mit PHPDoc können Variablen, Funktionen, Methoden und Klasse im PHP-Quelltext dokumentiert werden. In Entwicklungsumgebungen, wie z. B. PhpStorm, beeinflusst diese Dokumentation den Autovervollständiger, da die IDE auslesen kann, welche Daten von einer Methode als Parameter erwartet werden und von welchem Typ der Rückgabewert ist.

Beispiele:

Syntax Beispiel Beschreibung
@deprecated Version Beschreibung @deprecated 1.0 wird durch getCount() abgelöst Kennzeichnet eine Methode als „veraltet“
@param Typ Variable Beschreibung @param string $username Benutzername Definiert den Parameter einer Funktion/Methode
@return Typ Beschreibung @return PDO Datenbankverbindung Definiert den Rückgabewert einer Funktion/Methode
@var Typ Variable Beschreibung @var int Anzahl Legt den Typ einer Variable fest
@method Typ Methode @method string getRufnummer Ergänzt eine Klasse um eine Methode, die z. B. durch die Magische Funktion "__call" aufgerufen wird
@inheritDoc @inheritDoc Übernimmt die Beschreibung vom Interface oder von Elternklassen

Mögliche Typen

  • bool oder boolean
  • int oder integer
  • mixed
  • string
  • void
  • Namen einer PHP-Klasse (z. B. PDO)
  • null (nur als Rückgabewert bei @return möglich)

Hinweise: Es ist auch die Angabe von mehreren Typen möglich. Diese werden dann durch einen senkrechten Strich „|“ getrennt. Durch ein nachstehendes [] wird deklariert, dass der vorangestellte Typ innerhalb eines Arrays ausgeliefert wird.

Beispiel:

/**
* @param int $groupId Gruppen-ID
* @return user[]
*/

In diesem Beispiel wird von der Funktion die ID einer Gruppe als integer erwartet. Als Rückgabewert wird ein Array mit Objekten der Klasse „user“ zurückgegeben. Dank dieser Dokumentation „weiss“ die Entwicklungsumgebung, dass die Objekte in dem zurückgegebenen Array von der Klasse „user“ sind und stellt die Variablen und Methoden dieser Klasse bei der Autovervollständigung zur Verfügung.


PHPDoc mit PHP auslesen

In diesem Beispiel wird die Eigenschaft „zeichenlaenge“ für alle definierten Variablen dieser Klasse ausgegeben.

Beispiel:

<?php
 
class Auftrag
{
    /**
     * @var $auftragsnummer
     * @zeichenlaenge 25
     */
    private $auftragsnummer;
 
    /**
     * @param string $memo
     * @return array
     * @throws \ReflectionException
     */
    public function getProperties( $variable )
    {
        $result = [];
 
        $pdpDoc = new \ReflectionClass( $this );
        $vars = get_object_vars( $this );
 
        foreach( $vars as $property=>$var )
        {
            $comments   = $pdpDoc->getProperty( $property ) -> getDocComment();
            $pattern    = sprintf( '/@%s ([0-9]*)/', $variable );
            $length     = preg_match( $pattern, $comments, $matches );
 
            if( $length === 1 ) {
                $result[$property] = $matches[1];
            }
        }
 
        return $result;
    }
}
 
$test = new Auftrag;
$zeichenlaengen = $test->getProperties( 'zeichenlaenge' );
print_r( $zeichenlaengen );
php/phpdoc.txt · Zuletzt geändert: 2022/07/06 16:24 von webproducer