Signatur
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
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;
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;
// 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.