在制作一個使用 PHP 的 SoapClient 且與 PHP 8.1 兼容的庫時,我遇到了這個問題:
SoapClient 的所有屬性在以前是公開的時現(xiàn)在都是私有的。
因此,諸如獲取最后一個肥皂故障($soapClient->__soap_fault
)之類的事情不再可能。但如果出現(xiàn)問題,SoapClient 的大多數(shù)方法都會返回 null,而了解問題所在的唯一方法是獲取不再可訪問的 __soap_fault
。
在無法訪問 SoapClient 屬性的情況下,我應(yīng)該如何使用方法 __doRequest
?
查看舊的 SoapClient
文檔,似乎直接訪問屬性總是錯誤 - 對于 php7.2 例如根據(jù)回程機(jī)器, __soap_fault
根本沒有記錄(參見 https://web.archive.org/web/20171211100753/http://us3.php.net/manual/en/class.soapclient。 php)
文檔說明如下:
我想說,請確保啟用了異常(通過將 $options['exceptions'] =>?true
傳遞給 SoapClient 構(gòu)造函數(shù))并在 try/catch 中處理這些異常
相應(yīng)地。如果這沒有幫助,一個帶有未正確處理的具體錯誤的新問題可能會更有幫助。