© saicle/Shutterstock.com
PHP Magazin
Neue Möglichkeiten mit dem Exar-Framework entdecken

Aspektorientierung mit PHP

Die aspektorientierte Programmierung führt in der PHP-Welt bisher ein Nischendasein. Deren Verwendung in anderen Programmiersprachen zeigt, dass die AOP bei geschicktem Einsatz die Wiederverwendbarkeit des Programmcodes deutlich steigern kann. Dieser Artikel zeigt die Möglichkeiten der Aspektorientierung für PHP-Anwendungen auf.

Viktor Widiker


Ich bin ein Softwareentwickler. Ein leidenschaftlicher. Die Sprache meiner Wahl ist Java, meistens. Aber hin und wieder schreibe ich PHP-Anwendungen.

Wenn man mit mehreren Programmiersprachen parallel zu tun hat, lernt man in ihrer Gegenüberstellung sehr schnell Stärken und Schwächen der jeweiligen Sprache kennen. Beim Vergleich mit PHP fiel mir zuerst eine Stärke von Java besonders auf – die Möglichkeit der annotationsbasierten Entwicklung.

Von Java lernen

Wer mit JBoss Seam, Spring oder EJB gearbeitet hat, kennt die vielen Vorteile der annotationsbasierten Programmierung. Mithilfe von Annotationen werden Metainformationen in den Quelltext des Programms eingebunden und können vom Compiler, aber auch zur Laufzeit, ausgewertet werden, um Funktionalität der Anwendung zu beeinflussen. Annotationen bedienen in Java verschiedene Spezifikationen (APIs). So lassen sich beispielsweise mit JAXB Objektzustände sehr schnell und elegant in XML-Strukturen überführen, mit JAX- RS RESTful Web Services umsetzen oder mit JPA die Objekte auf eine relationale Datenbank übertragen. Dies alles sind Technologien, die es erlauben, innerhalb kürzester Zeit vollwertige Applikationen zu schreiben. Dabei bleibt der Quelltext sauber, denn die technischen Aspekte (wie z. B. die Bereitstellung einer Ressource als RESTful Web Service) werden durch externe Libraries umgesetzt und lediglich über die Annotationen mit dem Anwendungscode verknüpft.

Besonders interessant ist das in EJB 3.0 eingeführte „Standard Interceptor Model“. Mithilfe von Interceptoren kann man die Ausführung von Methoden abfangen und somit das Programmverhalten beeinflussen. Man spricht in diesem Zusammenhang auch von der aspektorientierten Programmierung, kurz AOP. Dies ist ein Programmierparadigma, bei dem Teile der Anwendung, die nicht unmittelbar zur Kernfunktionalität gehören, separat implementiert und erst zur Laufzeit in das eigentliche Programm eingefügt werden. Am Ende bleibt ein klar strukturierter, wartbarer Code, der mit Metainformationen versehen ist. Die Möglichkeit, dies annotationsbasiert zu machen, ist eine wesentliche Stärke von Java. Hier ist ein Beispiel einer annotierten Java-Klasse:

@Author(name = "John Doe")class MyClass { ...}

Wie nützlich wäre es doch, wenn man diese Technik auch auf PHP übertragen könnte. Doch dafür bietet PHP von Haus aus keine Möglichkeit. Im Jahr 2010 wurde ein entsprechender RFC abgelehnt [1]. Die Realisierung von Annotationen als Sprachelement von PHP war damit vom Tisch. Tr...

PHP Magazin
Neue Möglichkeiten mit dem Exar-Framework entdecken

Aspektorientierung mit PHP

Die aspektorientierte Programmierung führt in der PHP-Welt bisher ein Nischendasein. Deren Verwendung in anderen Programmiersprachen zeigt, dass die AOP bei geschicktem Einsatz die Wiederverwendbarkeit des Programmcodes deutlich steigern kann. Dieser Artikel zeigt die Möglichkeiten der Aspektorientierung für PHP-Anwendungen auf.

Viktor Widiker


Ich bin ein Softwareentwickler. Ein leidenschaftlicher. Die Sprache meiner Wahl ist Java, meistens. Aber hin und wieder schreibe ich PHP-Anwendungen.

Wenn man mit mehreren Programmiersprachen parallel zu tun hat, lernt man in ihrer Gegenüberstellung sehr schnell Stärken und Schwächen der jeweiligen Sprache kennen. Beim Vergleich mit PHP fiel mir zuerst eine Stärke von Java besonders auf – die Möglichkeit der annotationsbasierten Entwicklung.

Von Java lernen

Wer mit JBoss Seam, Spring oder EJB gearbeitet hat, kennt die vielen Vorteile der annotationsbasierten Programmierung. Mithilfe von Annotationen werden Metainformationen in den Quelltext des Programms eingebunden und können vom Compiler, aber auch zur Laufzeit, ausgewertet werden, um Funktionalität der Anwendung zu beeinflussen. Annotationen bedienen in Java verschiedene Spezifikationen (APIs). So lassen sich beispielsweise mit JAXB Objektzustände sehr schnell und elegant in XML-Strukturen überführen, mit JAX- RS RESTful Web Services umsetzen oder mit JPA die Objekte auf eine relationale Datenbank übertragen. Dies alles sind Technologien, die es erlauben, innerhalb kürzester Zeit vollwertige Applikationen zu schreiben. Dabei bleibt der Quelltext sauber, denn die technischen Aspekte (wie z. B. die Bereitstellung einer Ressource als RESTful Web Service) werden durch externe Libraries umgesetzt und lediglich über die Annotationen mit dem Anwendungscode verknüpft.

Besonders interessant ist das in EJB 3.0 eingeführte „Standard Interceptor Model“. Mithilfe von Interceptoren kann man die Ausführung von Methoden abfangen und somit das Programmverhalten beeinflussen. Man spricht in diesem Zusammenhang auch von der aspektorientierten Programmierung, kurz AOP. Dies ist ein Programmierparadigma, bei dem Teile der Anwendung, die nicht unmittelbar zur Kernfunktionalität gehören, separat implementiert und erst zur Laufzeit in das eigentliche Programm eingefügt werden. Am Ende bleibt ein klar strukturierter, wartbarer Code, der mit Metainformationen versehen ist. Die Möglichkeit, dies annotationsbasiert zu machen, ist eine wesentliche Stärke von Java. Hier ist ein Beispiel einer annotierten Java-Klasse:

@Author(name = "John Doe")class MyClass { ...}

Wie nützlich wäre es doch, wenn man diese Technik auch auf PHP übertragen könnte. Doch dafür bietet PHP von Haus aus keine Möglichkeit. Im Jahr 2010 wurde ein entsprechender RFC abgelehnt [1]. Die Realisierung von Annotationen als Sprachelement von PHP war damit vom Tisch. Tr...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang