Zum Inhalt springen

Annotations in PHP

Java hat ein Sprachkonstrukt, dass sich „Annotation“ nennt. Dabei handelt es sich um Anmerkungen im Quelltext, die diesen mit zusätzlicher Funktionalität oder Informationen ausstatten. Ein Beispiel ist das ORM. Man schreibt einfach seine Klasse wie gehabt, verknüpft diese dann aber über Annotations mit dem benutzten ORM-System. Man kann so die Tabelle angeben, oder welches Attribut mit welcher Spalte verknüpft ist. Weiter könnte man sich auch vorstellen, diese Funktion für Code Generatoren zu nutzen. Die dann entsprechenden Code erzeugen.

Hört sich doch alles super an, aber leider gibt es so etwas in PHP nicht. Zumindest nicht nativ. Man kann eine Bibliothek wie Addendum nutzen, die diese Funktionalität zur Verfügung stellt.

Das ganze funktioniert relativ einfach. Man schreibt spezielle phpdoc Kommentare an die entsprechenden Stellen. PHP hat auf die phpdoc-Blöcke Zugriff und Addendum nutzt geschickte reguläre Ausdrücke, um die Annotations zu finden. Wichtig ist hierbei, dass die entsprechende Klasse vorher definiert wurde und PHP bekannt ist. Die Annotation-Klassen müssen von der Klasse Annotation abgeleitet sein.

Jetzt möchte man auch noch an die Annotation gelangen. Hierfür stellt Addendum eine erweiterte Reflection-API zur Verfügung. Es handelt sich dabei um die native API von PHP, die um spezielle Annotation-Methoden erweitert wurde. Man kann also alles das tun, was die Reflection API auch sonst kann. Man kann eine Objekt-Instanz analysieren, oder einfach nur eine Klasse betrachten.

Ein Beschreibung, wie man diese Bibliothek nutzen kann, gibt es im Wiki von Addendum, wie man diese Bibliothek nutzen kann. Es ist wirklich ein einfaches System, was aber bei richtiger Nutzung einen entsprechenden Mehrwert liefert und dabei den Code sauberer hält.

Published inAllgemein

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close