SoapClient::__call()
方法是一個魔術方法,用於呼叫 SOAP 服務中不存在的方法。它允許您在不事先宣告方法的情況下呼叫 SOAP 服務的任何方法。
用法:
public mixed SoapClient::__call ( string $function_name , array $arguments )
引數:
function_name
:要呼叫的 SOAP 方法的名稱。arguments
:一個包含要傳遞給 SOAP 方法的引數的陣列。
返回值:
- 如果呼叫成功,則返回 SOAP 方法的返回值。
- 如果呼叫失敗,則丟擲一個 SoapFault 異常。
示例:
$wsdl = 'http://example.com/soap.wsdl';
$options = [
'trace' => true,
'exceptions' => true,
];
// 建立一個 SoapClient 例項
$client = new SoapClient($wsdl, $options);
// 呼叫不存在的 SOAP 方法
$response = $client->__call('nonExistentMethod', ['param1', 'param2']);
// 列印 SOAP 請求和響應
echo "Request:\n" . $client->__getLastRequest() . "\n";
echo "Response:\n" . $client->__getLastResponse() . "\n";
// 處理 SOAP 方法的返回值
var_dump($response);
在上面的示例中,我們建立了一個 SoapClient
例項,並使用__call()
方法呼叫了一個不存在的 SOAP 方法nonExistentMethod
。然後,我們列印了 SOAP 請求和響應,以及處理了 SOAP 方法的返回值。
請注意,__call()
方法並不會驗證所呼叫的方法是否存在於 WSDL 檔案中。因此,在呼叫不存在的方法時,可能會出現錯誤。建議在呼叫之前,先檢查 WSDL 檔案中是否存在該方法。