2

我正在使用从 WSDL 生成的类代码到 PHP 中。让我感到困惑的是类方法的编写方式,因此简单的数组似乎需要成为不存在的类的对象。

特别是这个 TFolderArray,文档应该是一个简单的 TFolder 对象数组:

<xsd:complexType name="TFolderArray">
<xsd:complexContent>
<xsd:restriction base="SOAP-ENC:Array">
<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="tns:TFolder[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>

TFolderArray 的文档将其定义为 TFolder 结构的数组。但是,如果将这样的数组传递给 GetOpportunityList()(见下文),它会抛出

传递给 Exchange::GetOpportunityList() 的参数 3 必须是 TFolderArray 的实例,给定数组

如果您尝试实例化该类的对象,您将正确地得到Class 'TFolderArray' not found.

如果您取消 $FolderArray 是 TFolderArray 实例的限制,并且只传递一个 TFolder 对象数组,那么功能就是我所期望的。

那么类渲染软件是否误解了 WSDL?$FolderArray 的类型提示应该只是“数组”吗?或者有没有一种方法可以在没有类的情况下“键入”数组?这是方法:

public function GetOpportunityList(TLoginInfo $LoginInfo, $AllRecords, TFolderArray $FolderArray) {
    return $this->__soapCall('GetOpportunityList', array($LoginInfo, $AllRecords, $FolderArray),       array(
            'uri' => 'urn:ExchangeService:Exchange33',
            'soapaction' => ''
           )
      );
  }
4

0 回答 0