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