Klassen-Informationen in PHP auslesen
Um in PHP Informationen über eine Klasse zu bekommen kann man die Reflections API verwenden. Dieses Paket ermöglicht generell Infos über definierte Klassen, Erweiterungen, Funktionen oder Objekte zu erhalten.
Wir wollen uns ansehen, wie man z.B. zu einer im Projekt verwendeten Klasse alle definierten Methoden auslesen kann: Hierzu erstellt man ein neues ReflectionClass-Objekt und übergibt dem Konstruktor entweder den Namen der auszulesenden Klasse oder ein Objekt der entsprechenden Klasse.
Haben wir also z.B. eine Elternklasse, welche von verschiedenen Kindklassen geerbt wird, können wir in dieser Elternklasse ermitteln, welche Methoden das aktuelle Objekt definiert hat.
public function testMe() { $thisInfo = new \ReflectionClass($this); echo 'Klasse: ' . $thisInfo->getShortName() . ' in Namespace ' . $thisInfo->getNamespaceName() . '<br>'; foreach ($thisInfo->getMethods() as $methodInfo) { echo 'Methode: ' . $methodInfo->getName() . '<br>'; echo 'Doc: ' . $methodInfo->getDocComment(); } }
Indem man auch wie im Beispiel gezeigt die Kommentare oberhalb der Methoden und Klassen bekommen kann, ermöglicht dies eigene Annotations ähnlich wie in Java zu implementieren.
Die Informationen welche die Reflection API liefert sind umfangreich und sehr gut dokumentiert: http://php.net/manual/de/book.reflection.php