PHP SoapClient类型不反映继承的字段

时间:2015-10-05 03:39:18

标签: php soap wsdl salesforce

我有一个包含两种复杂类型的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定义中,但我认为应该有更好的方法。

0 个答案:

没有答案