PHP$客户端->__soapCall(';方法';,$params);VS.$client->;方


PHP $client->__soapCall('method', $params); VS. $client->method($params);

我正在用PHP创建一个SOAP客户端。我的大多数电话看起来都像这个

$client->__soapCall('method', $params)

据我所知,这是调用WSDL中方法的两种方法之一,另一种是:

$client->method($params);

当调用一个只需要字符串的方法时,我只能获得第二种工作方式。使用需要整数的方法会出现以下错误:

The value '' cannot be parsed as the type 'Int32'.'

这两个请求的工作方式有何不同?

直接调用($client->method())使用了不推荐使用的神奇类方法__call()。如果您通过扩展客户端类来实现SoapClient(请参阅下面的示例),则可以将__call()实现为"callthrough"到__soapCall()。

class mySoapClient extends SoapClient {
    public function __call($method, $parameters) {
        return $this->__soapCall($method, $parameters);
    }
}

如果您不是通过扩展来实现客户端,那么使用直接调用($client->method())是个坏主意,因为它最终会从PHP中删除。