Start · Sprachen · PHP · Referenz · wddx_serialize_vars

wddx_serialize_vars

Funktion

Serialisiert eine oder mehrere PHP-Variablen als <code>string</code> in ein WDDX-Paket (Web Distributed Data Exchange XML-Format).

seit PHP 4.0.0 Kategorie: xml

Signatur

wddx_serialize_vars(string $var_name, string ...$var_names): string|false

Beschreibung

wddx_serialize_vars() nimmt die Namen von PHP-Variablen als Zeichenketten entgegen und gibt ein vollständiges WDDX-Paket als XML-String zurück. WDDX (Web Distributed Data Exchange) ist ein XML-basiertes Protokoll zum plattformübergreifenden Datenaustausch zwischen Webanwendungen, das Skalare, Arrays und Objekte abbilden kann.

Im Unterschied zu wddx_serialize_value(), das einen einzelnen Wert serialisiert, können bei wddx_serialize_vars() mehrere Variablennamen als Argumente übergeben werden. Die Funktion liest die Werte aus dem aktuellen Scope und bündelt sie in einem WDDX-<struct>-Element, wobei die Variablennamen als Schlüssel dienen.

Die Funktion ist besonders dann nützlich, wenn mehrere benannte Variablen gesammelt und als strukturierte XML-Nachricht weitergegeben werden sollen, etwa bei der Kommunikation mit anderen Sprachen (ColdFusion, Perl, Python) oder Legacy-Systemen, die WDDX verstehen.

Wichtig: Die WDDX-Erweiterung (ext/wddx) wurde in PHP 7.4 als deprecated markiert und in PHP 8.0 vollständig entfernt. Sie steht in modernen PHP-Versionen nicht mehr zur Verfügung. Für neue Projekte sollte stattdessen json_encode() oder ein XML-basiertes Format wie SimpleXML verwendet werden.

Parameter

Name Typ Default Beschreibung
$var_name Pflicht string Name der ersten zu serialisierenden Variable als Zeichenkette (z. B. 'meinArray'). Die Variable muss im aktuellen Scope sichtbar sein.
$var_names string Optionale weitere Variablennamen als zusätzliche Argumente. Die Funktion akzeptiert beliebig viele Zeichenketten-Argumente.

Rückgabewert

Typ
string|false
Beschreibung
Gibt das erzeugte WDDX-Paket als XML-String zurück. Bei einem Fehler (z. B. wenn eine Variable nicht gefunden wurde) wird false zurückgegeben.

Beispiele

Serialisierung einzelner Variablen in ein WDDX-Paket

<?php
// Nur verfügbar in PHP < 8.0 (ext/wddx)
$name    = 'Max Mustermann';
$alter   = 42;
$hobbys  = ['Lesen', 'Programmieren', 'Wandern'];

$paket = wddx_serialize_vars('name', 'alter', 'hobbys');
echo $paket;
?>
<wddxPacket version='1.0'><header/><data><struct><var name='name'><string>Max Mustermann</string></var><var name='alter'><number>42</number></var><var name='hobbys'><array length='3'><string>Lesen</string><string>Programmieren</string><string>Wandern</string></array></var></struct></data></wddxPacket>

WDDX-Paket deserialisieren und prüfen

<?php
// Nur verfügbar in PHP < 8.0 (ext/wddx)
$stadt   = 'Berlin';
$einwohnerzahl = 3_769_000;

$xml = wddx_serialize_vars('stadt', 'einwohnerzahl');

if ($xml === false) {
    echo 'Serialisierung fehlgeschlagen.';
} else {
    // Paket wieder einlesen
    $daten = wddx_deserialize($xml);
    var_dump($daten);
}
?>
array(2) { ["stadt"]=> string(6) "Berlin" ["einwohnerzahl"]=> int(3769000) }

// Wichtig · Fallstricke

Deprecation & Entfernung: Die WDDX-Erweiterung wurde in PHP 7.4 als veraltet (deprecated) markiert und in PHP 8.0 vollständig aus dem Kern entfernt. wddx_serialize_vars() steht in PHP 8.0 und neuer nicht mehr zur Verfügung. Ein Aufruf führt zu einem fatalen Fehler.

Für moderne Projekte empfiehlt sich json_encode() als einfache, portable Alternative zum Datenaustausch. Wer XML benötigt, kann auf SimpleXMLElement oder DOMDocument zurückgreifen.

Die Variablen müssen im aktuellen Scope der aufrufenden Funktion definiert sein. Variablen aus einem äußeren Scope (z. B. globale Variablen innerhalb einer Funktion ohne global-Deklaration) werden nicht gefunden und führen zu einem Fehler.