我正在使用从 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' => ''
)
);
}