Start · Sprachen · PHP · Referenz · is_soap_fault

is_soap_fault

Funktion

Prüft, ob ein Rückgabewert einer SOAP-Funktion ein <code>SoapFault</code>-Objekt ist, d. h. ob ein SOAP-Aufruf fehlgeschlagen ist.

seit PHP 5.0.0 Kategorie: http

Signatur

is_soap_fault(mixed $value): bool

Beschreibung

is_soap_fault() prüft, ob der übergebene Wert eine Instanz der Klasse SoapFault ist. Diese Funktion ist nützlich, wenn SOAP-Aufrufe im nicht-Ausnahme-Modus (ohne exceptions-Option) durchgeführt werden und Fehler nicht als Exceptions geworfen werden, sondern als SoapFault-Objekt zurückgegeben werden.

Standardmäßig wirft der SoapClient bei einem Fehler eine SoapFault-Exception. Wird der Client jedoch mit der Option exceptions => false instanziiert, so wird stattdessen ein SoapFault-Objekt zurückgegeben. In diesem Fall kann is_soap_fault() verwendet werden, um das Ergebnis zu überprüfen, bevor es weiterverarbeitet wird.

Die Funktion ist funktional äquivalent zu $value instanceof SoapFault, bietet jedoch eine lesbare, explizit auf SOAP ausgerichtete Schreibweise und ist besonders in älterem PHP-Code verbreitet.

Parameter

Name Typ Default Beschreibung
$value Pflicht mixed Der zu prüfende Wert, typischerweise das Rückgabeergebnis eines SOAP-Methodenaufrufs.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn value eine Instanz von SoapFault ist, andernfalls false.

Beispiele

SOAP-Aufruf ohne Exceptions prüfen

<?php
$client = new SoapClient('https://example.com/service?wsdl', [
    'exceptions' => false,
]);

$result = $client->eineMehode(['param' => 'wert']);

if (is_soap_fault($result)) {
    echo 'SOAP-Fehler aufgetreten: ' . $result->faultstring . PHP_EOL;
    echo 'Fehlercode: ' . $result->faultcode . PHP_EOL;
} else {
    echo 'Ergebnis: ';
    var_dump($result);
}
SOAP-Fehler aufgetreten: Could not connect to host Fehlercode: HTTP

Vergleich mit instanceof

<?php
$fault = new SoapFault('Server', 'Interner Serverfehler');

// Beide Varianten sind gleichwertig:
var_dump(is_soap_fault($fault));         // bool(true)
var_dump($fault instanceof SoapFault);   // bool(true)

$normalWert = ['key' => 'value'];
var_dump(is_soap_fault($normalWert));    // bool(false)
bool(true) bool(true) bool(false)

// Wichtig · Fallstricke

Hinweis: is_soap_fault() funktioniert nur korrekt, wenn die soap-Erweiterung geladen ist. Ohne diese Erweiterung existiert die Klasse SoapFault nicht und die Funktion steht nicht zur Verfügung.

Wenn der SoapClient mit der Standardoption exceptions => true (oder ohne Angabe der Option) verwendet wird, werden Fehler als SoapFault-Exceptions geworfen und können mit einem try/catch-Block abgefangen werden. In diesem Fall ist is_soap_fault() nicht notwendig.

Seit PHP 5.3+ empfiehlt sich für neue Projekte der Einsatz von try/catch (SoapFault $e) für eine sauberere Fehlerbehandlung statt der Prüfung mit is_soap_fault().