我正在用 PHP 创建一个 SOAP 客户端。我的大部分电话看起来像这样
$client->__soapCall('method', $params)
Run Code Online (Sandbox Code Playgroud)
据我所知,这是在 WSDL 中调用方法的两种方法之一,另一种是:
$client->method($params);
Run Code Online (Sandbox Code Playgroud)
在调用只需要字符串的方法时,我只能获得第二种工作方式。使用需要整数的方法给我这个错误:
The value '' cannot be parsed as the type 'Int32'.'
Run Code Online (Sandbox Code Playgroud)
这两个请求的工作方式有何不同?
直接调用 ($client->method()) 使用已弃用的神奇类方法 __call()。如果您通过扩展客户端类来实现 SoapClient(请参见下面的示例),则可以将 __call() 实现为“callthru”到 __soapCall()。
class mySoapClient extends SoapClient {
public function __call($method, $parameters) {
return $this->__soapCall($method, $parameters);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不通过扩展来实现客户端,那么使用直接调用 ($client->method()) 是一个坏主意,因为它最终会从 PHP 中删除。
| 归档时间: |
|
| 查看次数: |
7714 次 |
| 最近记录: |