23.7 XML_Wddx 

Besprochene Version: 1.0.0 | Lizenz: PHP-Lizenz 2.02 |
Klassendatei(en): XML/Wddx.php |
WDDX ist die Abkürzung für Web Distributed Data Exchange. Diese Technologie ermöglicht es Ihnen, Daten zwischen verschiedenen Programmiersprachen wie PHP, ASP oder ColdFusion auszutauschen. Es handelt sich als um eine Art Esperanto, das von vielen Sprachen verstanden wird. Um die Daten kompatibel zu machen, werden sie in XML umgewandelt und verschickt.
XML_Wddx gibt Ihnen die Möglichkeit, Daten von bzw. nach WDDX zu konvertieren. Zwar sind dafür auch entsprechende Funktionen in PHP vorgesehen, aber diese sind nicht auf allen Systemen verfügbar. Darüber hinaus erstellt XML_Wddx eine optisch besser formatierte Ausgabe als PHP, so dass die Fehlersuche vereinfacht wird.
Das Paket besteht nur aus zwei Methoden, die beide statisch genutzt werden können. serialize() konvertiert Ihre Daten nach WDDX, wohingegen deserialize() den übergebenen WDDX-Code wieder nach PHP konvertiert.
require_once('XML/Wddx.php'); $dat = array ("vorname" => "Bart", "nachname" => "Simpson"); echo XML_Wddx::serialize($dat);
Listing 23.13 Serialisierung von Daten
Listing 23.13 generiert diese Ausgabe:
<wddxPacket version='1.0'><header/><data> <struct> <var name='vorname'><string>Bart</string></var> <var name='nachname'><string>Simpson</string></var> </struct> </data></wddxPacket>
Der resultierende Code wird also deutlich besser formatiert als ein Rückgabewert des PHP-Pendants. Sie können der Methode verschiedenste Arten von Daten übergeben. Neben Arrays kann sie auch Strings, alle Arten von Zahlen, boolesche Werte und Objekte verarbeiten. Sollten Sie eine Ressource, wie eine geöffnete Datei oder eine Datenbankverbindung, übergeben, wird auch diese in das Dokument eingefügt, was natürlich wenig Sinn macht.
Empfangen Sie WDDX-Daten und wollen Sie diese wieder entschlüsseln, können Sie der Methode deserialize() die Daten übergeben. Sie gibt Ihnen die Daten als Variable, Array oder was benötigt wird zurück:
Möchten Sie Binärdaten wie Bilder per WDDX übertragen, müssten Sie diese erst Base64-kodieren und dann als String versenden.