CeBIT 2002 - Persistente Objekte - Aggregation und Overloading - SOAP

Dev.Talk
Kommentare

Ich freue mich, Ihnen beginnend mit dieser Ausgabe des PHP Magazins in meiner Kolumne Dev.Talk von den aktuellen Entwicklungen rund um PHP berichten zu können. Suchte man in den vergangenen Jahren noch meist vergebens nach PHP auf der weltweit größten IT Fachmesse, so war PHP in diesem Jahr auf der CeBIT zum ersten Mal richtig präsent, gab es doch Stände von beispielsweise Zend Technologies Ltd. [1] aus Israel und der Maguma AG [2] aus Italien.

PHP @ CeBIT 2002

Zend Technologies, die von den Entwicklern des PHP 4 Kerns Zeev Suraski und Andi Gutmans gegründete Firma, stellte auf der CeBIT unter anderem eine neue Version des Zend Encoders vor. Im Gegensatz zu früheren Versionen der Software, mit der PHP Entwickler ihre Anwendungen und Skripte verschlüsseln und somit vor neugierigen Augen und ungewollter Manipulation durch Dritte schützen können, kommt der Zend Encoder nun mit einer grafischen Benutzeroberfläche daher, was die Arbeit mit ihm deutlich erleichtert. Darüber hinaus integriert sich der Encoder nahtlos in die Zend IDE, der PHP Entwicklungsumgebung mit Debugging Funktionalität aus dem Hause Zend. Am Stand der Maguma AG aus Bozen in Italien feierte das Maguma Enterprise Environment for PHP seine Weltpremiere. Diese speziell für den Einsatz im Unternehmen konzipierte Software unterstützt sowohl den Web-Entwickler während des kompletten Entwicklungsprozesses als auch den Administrator beim Betrieb der Anwendungen auf dem Server. Maguma bündelt für den Maguma Server for PHP die bekannten Open Source-Technologien Apache 1.3, PHP 4.1, MySQL Max 3.23 sowie CVS und bietet eine einheitliche Administrationsoberfläche für diese Serverkomponenten. Auf der Clientseite bietet Maguma dem Entwickler mit dem Maguma Studio for PHP eine integrierte Entwicklungsumgebung mit Debugging für PHP an. Die Six Offene Systeme GmbH [3] aus Leinfelden-Echterdingen bei Stuttgart präsentierte an ihrem Stand die neue Version 5 des bekannten und weit verbreiteten Content Management Systems SixCMS. Das auf Open Source-Technologien wie Apache, PHP 4 und MySQL basierende System überzeugt vor allem durch die leichte Integration mit den Produkten für Online Abrechnung (SixAIM_Billing) oder eCommerce Customer Relations Management (SixAIM_Profiling) aus dem gleichen Hause. Zum ersten Mal mit einem Stand auf der CeBIT vertreten war in diesem Jahr MySQL AB [4] aus Schweden, die Firma hinter dem populären Open Source-Datenbanksystem. Hier konnte man sich über die vielfältigen Neuerungen von MySQL 4 oder die Schulungen, die MySQL AB unter anderem anbietet, informieren. Fragen zu PHP und MySQL wurden von Zak Greant beantwortet, der vor kurzem von MySQL AB engagiert wurde, um unter anderem die PHP MySQL Extension zu überarbeiten.

Bananen statt Bohnen

Mit der Veröffentlichung einer ersten Testversion der Script Running Machine (SRM) [5] ebnet das Team um Derick Rethans PHP den Weg in Richtung Application Server. Neben der Möglichkeit, die Authentifizierung von Besuchern oder das Verwalten von Sessiondaten über den SRM Daemon abzuwickeln, und der Einführung von Applikationsvariablen stellen die PHP Bananas das herausragende Merkmal von SRM dar. Ähnlich den in der Java-Welt etablierten Beans ist es mit den PHP Bananas möglich, Komponenten zu entwickeln, die persistent im Speicher des Servers gehalten werden und auf deren Methoden man aus seinen PHP Skripten zugreifen kann. Dies macht das Pooling von Ressourcen, wie zum Beispiel Datenbankverbindungen, aber auch das Halten von komplexen Daten- und Objektstrukturen für die Verwendung über den Requestkontext hinaus im Speicher möglich. Beispiel einer SRM Banana:

count;
}
}

$test = new Test();
$test->run();
?>

Um eine Klasse als persistentes Objekt in den SRM Daemon laden zu können, muss diese von der Klasse Banana abgeleitet sein sowie in dem Skript, das die Klasse deklariert, instanziert werden, damit auf diesem Objekt die von Banana geerbte Methode run() aufgerufen werden kann. Zugriff auf das persistente Objekt aus einem normalen Skript:

do_count();
?>

Noch bevor mit Verfügbarkeit der Zend Engine 2 die OOP Features von PHP grundlegend verbessert und erweitert werden, dürfen sich PHP Programmierer über neue Funktionen freuen, die mit Veröffentlichung von PHP 4.2.0 verfügbar wurden. Mit den Aggregationsfunktionen lässt sich Mehrfachvererbung von Klassen durch Zusammenführen der Eigenschaften und Methoden von Objekten zur Laufzeit erreichen:

print_a();
$c->print_b();
?>

Neben der aggregate() Funktion, die sämtliche Eigenschaften und Methoden der Klassen in einer Objektinstanz zusammenführt, besteht mit den Funktionen aggregate_properties(), aggregate_properties_by_list(), aggregate_properties_by_regex() bzw. aggregate_methods(), aggregate_methods_by_list(), aggregate_methods_by_regex() die Möglichkeit, die zu vereinigenden Eigenschaften bzw. Methoden auszuwählen. Die Overloading-Funktionen erlauben das Überladen (englisch: Overloading) der Zugriffe auf Klassenvariablen und Methodenaufrufe. Beispielsweise ist es hiermit möglich, dass eine bestimmte Aktion automatisch ausgeführt wird, wenn auf eine Klassenvariable das erste Mal zugegriffen wird. Im Falle einer Datenbankverbindung könnte dies dazu genutzt werden, dass diese nicht bereits im Konstruktor der Klasse aufgebaut wird, sondern erst dann, wenn sie benötigt wird:

connection)) {
$this->connection = $this->connect();
}

$propertyValue = $this->connection;
}
break;
}

return true;
}
}

overload('DB');
?>

connection abgelegt. Ähnlich __get() können mit __set() und __call() Callbacks für schreibende Zugriffe auf Membervariablen sowie für Methodenaufrufe definiert werden. Abschließend bleibt zu den Aggregation- und Overloading-Funktionen zu sagen, dass beide noch als experimentell zu bezeichnen sind, man aber nützliche Dinge mit ihnen anstellen kann, wenn man weiß, was man tut. So fügt sich die Implementierung der Aggregation nicht nahtlos in das übrige OOP Konzept von PHP ein: Funktionen wie beispielsweise get_class() oder is_a() können kein korrektes Ergebnis liefern, wenn sie auf ein aggregiertes Objekt angewandt werden.

SOAP WebServices

Seit dem Artikel über die Programmierung von WebServices mit PHP und SOAP von Dr. Volker Göbbels in der letzten Ausgabe des PHP Magazins [6] hat sich einiges getan. Stig Sæther Bakken und Shane Caraveo haben sich der SOAP Implementierung von Dietrich Ayala angenommen, sie ins PEAR [7] gestellt und dort weiterentwickelt. Der Code wurde nicht nur aufgeräumt und ist nun lesbarer geworden, es wurden auch Fehler behoben und neue Funktionalität hinzugefügt.

Sebastian Bergmann studiert Informatik in Bonn und widmet einen Großteil seiner Freizeit verschiedenen Open Source-Projekten rund um PHP.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -