SoapClient
リモート操作を呼び出すために PHP SOAP 拡張 ( ) を使用しています。その WSDL タイプは次のようになります。
<s:element name="OperationResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="OperationResult">
<s:complexType mixed="true">
<s:sequence>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
私が理解できる限り、タイプは「何でも」です。呼び出しの結果はネストされたオブジェクトに変換され、stdClass
操作が簡単ではありません。
object(stdClass)[3]
public 'OperationResult' =>
object(stdClass)[4]
public 'any' => string 'xml string here...'
(これは実際には SOAP 拡張自体によって実行されます)
このオブジェクトの作成方法を制御するにはどうすればよいですか? classmap
オプションを SOAP クライアントに渡そうとしましたが、機能しません。インスタンスを取得しましたが、プロパティはnull
.
結果を手動で解析する問題は明らかです。SimpleXmlElement
からの文字列を使用して新しい を作成できますが$result->OperationResult->any
、WSDL が変更されると機能しません。