使用SoapClient,是否可以将元素名称(而不是类型)映射到php类?
在php手册中:
http://www.php.net/manual/en/soapclient.soapclient.php
因此定义了类图:
classmap选项可用于将某些WSDL类型映射到PHP类。此选项必须是一个数组,其中WSDL类型作为键,PHP类的名称作为值。
如果元素没有类型,是否可以映射?
例如
<xsd:element name="M1Response">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="N1Response" type="bons0:R1Out"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
即。我想将元素M1Response
映射到php类
我可以将N1Response
映射到php类,但响应是这样的:
stdClass Object
(
[N1Response] => MyPHPClassResponse Object
(
...
)
)
几乎违背了类图功能的目的。
任何帮助都将不胜感激。
由于
答案 0 :(得分:4)
所以我误解了types
type
不 R1Out
:
<xsd:element name="N1Response" type="bons0:R1Out"/>
事实上这是type
:
$options['classmap'] = array('M1Response' => 'MyPHPClassResponse');
$client = new SoapClient('test.wsdl', $options);
$client->__getTypes();
检查__getTypes()
的输出显示确实存在与M1Response元素关联的类型:
struct M1Response {
R1Out N1Response;
}
所以答案是(如上所述):
$options['classmap'] = array('M1Response' => 'MyPHPClassResponse');