Signatur
Beschreibung
xmlrpc_is_fault() überprüft ein Array, das typischerweise durch xmlrpc_decode() aus einer XML-RPC-Antwort erzeugt wurde, darauf, ob es einen Fehler (Fault) repräsentiert. Ein XML-RPC-Fault ist eine spezielle Antwort, die anstelle eines normalen Rückgabewertes gesendet wird, wenn auf dem Server ein Fehler aufgetreten ist.
Die Funktion prüft intern, ob das übergebene Array die beiden Pflichtschlüssel faultCode (eine ganze Zahl) und faultString (eine Fehlerbeschreibung) enthält. Sind beide Schlüssel vorhanden, wird true zurückgegeben.
Diese Funktion ist besonders nützlich, wenn XML-RPC-Antworten direkt als Array verarbeitet werden und man unterscheiden muss, ob eine Antwort einen regulären Wert oder einen Fehler enthält — bevor man auf die eigentlichen Nutzdaten zugreift.
Hinweis: Die gesamte xmlrpc_*-Erweiterung gilt seit PHP 8.0 als deprecated und wird in einer zukünftigen PHP-Version entfernt. Für neue Projekte sollten Alternativen wie phpxmlrpc/phpxmlrpc oder die Verarbeitung über SimpleXML in Betracht gezogen werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $arg Pflicht | array | Ein Array, das typischerweise das Ergebnis von xmlrpc_decode() ist und auf das Vorhandensein der Schlüssel faultCode und faultString geprüft wird. |
Rückgabewert
true zurück, wenn das Array einen XML-RPC-Fault darstellt (d. h. die Schlüssel faultCode und faultString enthält), andernfalls false.Beispiele
Grundlegende Fehlerprüfung einer XML-RPC-Antwort
<?php
// Simulierte XML-RPC-Fault-Antwort (wie sie xmlrpc_decode() liefern würde)
$response = [
'faultCode' => 404,
'faultString' => 'Methode nicht gefunden',
];
if (xmlrpc_is_fault($response)) {
echo 'XML-RPC-Fehler ' . $response['faultCode'] . ': ' . $response['faultString'];
} else {
echo 'Antwort erfolgreich: ';
print_r($response);
}
Verarbeitung einer echten XML-RPC-Serverantwort
<?php
// Beispielhafte XML-RPC-Fault-Antwort als XML-String
$xml = '<?xml version="1.0"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>42</int></value>
</member>
<member>
<name>faultString</name>
<value><string>Unbekannter Fehler aufgetreten</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>';
$decoded = xmlrpc_decode($xml);
if (is_array($decoded) && xmlrpc_is_fault($decoded)) {
echo 'Serverfehler erkannt!' . PHP_EOL;
echo 'Fehlercode: ' . $decoded['faultCode'] . PHP_EOL;
echo 'Fehlermeldung: ' . $decoded['faultString'] . PHP_EOL;
} else {
echo 'Erfolgreiche Antwort erhalten.';
}
// Wichtig · Fallstricke
Deprecation: Die xmlrpc_*-Funktionsfamilie (PECL-xmlrpc-Erweiterung, in PHP gebündelt) ist seit PHP 8.0 als veraltet (deprecated) markiert und erzeugt entsprechende Warnungen. Sie sollte in neuen Projekten nicht mehr verwendet werden.
Die Funktion prüft ausschließlich das Vorhandensein der Schlüssel faultCode und faultString. Ein Array, das zufällig diese Schlüssel enthält, würde ebenfalls als Fault erkannt — dieses Verhalten sollte bei der Verarbeitung eigener Datenstrukturen berücksichtigt werden.
Vor dem Aufruf von xmlrpc_is_fault() sollte sichergestellt sein, dass der Rückgabewert von xmlrpc_decode() tatsächlich ein Array ist, da die Funktion sonst einen Fehler auslösen kann.