Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Both sides previous revision Vorhergehende Überarbeitung | |||
php:phpdoc [2022/06/16 16:39] webproducer @inheritDoc |
php:phpdoc [2022/07/06 16:24] (aktuell) webproducer PHPDoc mit PHP auslesen |
||
---|---|---|---|
Zeile 39: | Zeile 39: | ||
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. | 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:// | ||
+ | |||
+ | <code php> | ||
+ | <?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 ); | ||
+ | </code> |