在制作一个使用 PHP 的 SoapClient 且与 PHP 8.1 兼容的库时,我遇到了这个问题:
SoapClient 的所有属性在以前是公开的时现在都是私有的。
因此,诸如获取最后一个肥皂故障($soapClient->__soap_fault
)之类的事情不再可能。但如果出现问题,SoapClient 的大多数方法都会返回 null,而了解问题所在的唯一方法是获取不再可访问的 __soap_fault
。
在无法访问 SoapClient 属性的情况下,我应该如何使用方法 __doRequest
?
查看旧的
SoapClient
文档,似乎直接访问属性总是错误 - 对于 php7.2 例如根据回程机器,__soap_fault
根本没有记录(参见 https://web.archive.org/web/20171211100753/http://us3.php.net/manual/en/class.soapclient。 php)文档说明如下:
我想说,请确保启用了异常(通过将
$options['exceptions'] => true
传递给 SoapClient 构造函数)并在try/catch 中处理这些异常
相应地。如果这没有帮助,一个带有未正确处理的具体错误的新问题可能会更有帮助。