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 文件中是否存在该方法。