Start · Sprachen · PHP · Referenz · xmlrpc_set_type

xmlrpc_set_type

Funktion

Setzt den XML-RPC-Typ (<code>base64</code> oder <code>datetime</code>) für einen PHP-String-Wert, der beim Kodieren korrekt serialisiert wird.

seit PHP 4.1.0 Kategorie: xml

Signatur

xmlrpc_set_type(string &$value, string $type): bool

Beschreibung

xmlrpc_set_type annotiert einen PHP-String mit einem XML-RPC-spezifischen Typ. Das ist notwendig, weil XML-RPC zwischen einfachen Strings und den speziellen Typen base64 sowie datetime.iso8601 unterscheidet, PHP aber beide intern als String behandelt. Durch die Typisierung weiß der XML-RPC-Encoder, wie er den Wert im XML-Envelope serialisieren soll.

Die Funktion arbeitet direkt auf der übergebenen Variable (per Referenz) und fügt ihr eine interne Typ-Markierung hinzu. Anschließend kann die Variable normal in Arrays oder als Argument für xmlrpc_encode bzw. xmlrpc_encode_request verwendet werden, und sie wird mit dem richtigen XML-RPC-Tag (<base64> oder <dateTime.iso8601>) ausgegeben.

Erlaubte Werte für $type sind 'base64' und 'datetime'. Ein datetime-String sollte dem ISO-8601-Format entsprechen, z. B. 19980717T14:08:55. Für base64-Daten muss der String bereits die Rohdaten enthalten; die eigentliche Base64-Kodierung übernimmt der Encoder automatisch.

Hinweis: Die gesamte xmlrpc_*-Erweiterung ist seit PHP 8.0 als deprecated markiert und wurde in PHP 8.4 entfernt. Für neue Projekte sollten Bibliotheken wie phpxmlrpc verwendet werden.

Parameter

Name Typ Default Beschreibung
$value Pflicht string Die zu typisierende Variable (wird per Referenz übergeben). Nach dem Aufruf trägt sie die interne Typ-Markierung für den XML-RPC-Encoder.
$type Pflicht string Der XML-RPC-Typ, der gesetzt werden soll. Erlaubte Werte: 'base64' oder 'datetime'.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Typ erfolgreich gesetzt wurde, andernfalls false (z. B. bei einem ungültigen Typ-String).

Beispiele

Binärdaten als base64 in einer XML-RPC-Anfrage senden

<?php
// Rohdaten (z. B. Bild-Inhalt) als base64 typisieren
$imageData = file_get_contents('/pfad/zum/bild.png');

// Typ auf base64 setzen – der Encoder erledigt die eigentliche Kodierung
xmlrpc_set_type($imageData, 'base64');

// Anfrage erstellen
$request = xmlrpc_encode_request('uploadImage', [$imageData]);
echo $request;
<?xml version="1.0" encoding="iso-8859-1"?> <methodCall> <methodName>uploadImage</methodName> <params> <param><value><base64>iVBORw0KGgo...</base64></value></param> </params> </methodCall>

Datum als datetime.iso8601 übergeben

<?php
// ISO-8601-Datum für XML-RPC typisieren
$appointmentDate = '20240315T09:30:00';

xmlrpc_set_type($appointmentDate, 'datetime');

$params = [
    'user'    => 'alice',
    'meeting' => $appointmentDate,
];

$request = xmlrpc_encode_request('scheduleAppointment', [$params]);
echo $request;
<?xml version="1.0" encoding="iso-8859-1"?> <methodCall> <methodName>scheduleAppointment</methodName> <params> <param><value><struct> <member><name>user</name><value><string>alice</string></value></member> <member><name>meeting</name><value><dateTime.iso8601>20240315T09:30:00</dateTime.iso8601></value></member> </struct></value></param> </params> </methodCall>

// Wichtig · Fallstricke

Deprecation: Die xmlrpc_*-Funktionsfamilie wurde in PHP 8.0 als veraltet (deprecated) eingestuft und in PHP 8.4 vollständig entfernt. Bestehender Code sollte auf eine aktiv gepflegte XML-RPC-Bibliothek migriert werden.

Ein häufiger Fallstrick: Der übergebene String muss für datetime im exakten ISO-8601-Format vorliegen, das XML-RPC erwartet (YYYYMMDDTHH:MM:SS). PHP-Datumsformate wie Y-m-d H:i:s werden nicht automatisch konvertiert und führen zu ungültigen Anfragen.

Da die Funktion per Referenz arbeitet, darf kein Literal oder temporärer Ausdruck direkt übergeben werden – die Variable muss explizit deklariert sein.