我有一个包含两种复杂类型的WSDL文件,一种扩展另一种。类似的东西:
<complexType name="Email">
<sequence>
<element name="replyTo" type="xsd:string"/>
<element name="senderDisplayName" type="xsd:string"/>
<element name="subject" type="xsd:string"/>
...
</sequence>
</complexType>
...
<complexType name="SingleEmailMessage">
<complexContent>
<extension base="tns:Email">
<sequence>
<element name="plainTextBody" type="xsd:string"/>
...
</sequence>
</extension>
</complexContent>
</complexType>
如果您识别SalesForce对象名称,则称赞。现在,如果你将它发送到PHP SoapClient进行处理:
<?php
$client = new SoapClient('wsdl');
$client->__getTypes();
?>
SingleEmailMessage类型不会反映它所扩展类型的字段,也无法从getTypes
的输出中获取继承。示例输出:
struct Email {
string replyTo;
string senderDisplayName;
string subject;
}struct SingleEmailMessage {
string plainTextBody;
}
我通过编辑WSDL文件来解决这个问题,直接将Email中的字段放入SingleEmailMessage定义中,但我认为应该有更好的方法。