Einfach mal phpDoc auslesen

Wie einige sicherlich mitbekommen haben, arbeite ich seit geraumer Zeit mit dem vs vergleichen-und-sparen GmbH Entwickler Team zusammen. Mit der Zeit hat sich ein Framework mit mehreren darauf aufsetzenden Applikationen entwickelt. Seit kurzem ist ein neues System zur Erkennung von Fehlern aktiv. Bisher war es so, dass Notices oder fatale Fehler unbemerkt blieben und lediglich in den Log Dateien des Servers erschienen. Zudem fanden die Ausgaben der Fehlermeldungen direkt auf dem Bildschirm statt. Ihr könnt Euch sicherlich vorstellen, welchen Eindruck das auf den Besucher der Seite gemacht hat.

Die Idee ist einfach und effektiv. Jeder Entwickler dokumentiert die Klassen und Applikationen nach dem phpDoc Standard. Aufgrund der weit entwickelten OOP Struktur werden alle erdenklichen PHP Fehler als Exception geworfen und von einem Handler abgefangen und weiterverarbeitet. Der Handler dokumentiert die abgefangenen Fehler und kann sie bei Bedarf auch als E-Mail an den Entwickler versenden, so dass dieser so schnell wie möglich auf den Fehler reagieren kann. Aber wie komme ich so einfach und schnell wie möglich an die E-Mail Adressen aus dem Kommentar Kopf der PHP Dateien?

Die Umsetzung der Idee findet mit der PHP Reflection API statt. Da die Coding Standards in der IAK ein ausführliches Dokumentieren der Entwicklungen nach phpDoc Standard vorschreiben, werden die PHP Kommentare der Klasse, in der die Exception / der Fehler geworfen wurde, auf einfachste Art und Weise ausgelesen, so dass der Autor / der Entwickler und dessen E-Mail Adresse ermittelt werden können. Sobald die E-Mail Adresse gefunden wurde, wird, sofern dies gewünscht ist, eine E-Mail an den Entwickler mit einem ausführlichen Fehler Report gesendet.

Ein kurzes Beispiel:

/**
 * Diese Klasse dient zum Testen der Reflection API
 * @author Marcel Maaß < info@mm-newmedia.de >
 * @copyright 2011 MM Newmedia < http://www.mm-newmedia.de >
 * @since 2011-01-19
 * @version SVN: $Id:$
 */
class TestClass {

	/**
	 * Die Methode blubb
	 */
	public static function doSth() {
		echo "blubb";
	}
}

$reflection = new ReflectionClass('TestClass');
$phpDoc = $reflection->getDocComment();

$matches = array();
preg_match("/@author(.*)< (.*)>(\\r\\n|\\r|\\n)/U", $phpDoc, $matches);

echo trim($matches[2]); // gibt "info@mm-newmedia.de" aus

Die Reflection API bietet viele weitere Möglichkeiten. Leider ist die Dokumentation im PHP Handbuch noch ein wenig dürftig. Aber es funktioniert.

1 Gedanke zu „Einfach mal phpDoc auslesen“

  1. Hää?! Ich versteh es grad so: du list die comments raus, filterst bestimmte zeichen und raus kommt ein Array mit den Comments?
    Verrückt!(Aber irgendwie cool *daumen hoch*)

    Antworten

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.