Start · Sprachen · PHP · Referenz · xmlrpc_is_fault

xmlrpc_is_fault

Funktion

Prüft, ob ein Array einen XML-RPC-Fehler (Fault) darstellt, d. h. ob es die Schlüssel <code>faultCode</code> und <code>faultString</code> enthält.

seit PHP 4.1.0 Kategorie: xml

Signatur

xmlrpc_is_fault(array $arg): bool

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

Typ
bool
Beschreibung
Gibt 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);
}
XML-RPC-Fehler 404: Methode nicht gefunden

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.';
}
Serverfehler erkannt! Fehlercode: 42 Fehlermeldung: Unbekannter Fehler aufgetreten

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