gpt4 book ai didi

php - 如何将复杂类型映射到现有类

转载 作者:行者123 更新时间:2023-12-02 05:13:14 25 4
gpt4 key购买 nike

我想将现有类型映射到 wsdl 类型

wsdl 复杂类型

 <types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/service1/">
<xsd:complexType name="RequestDescriptor">
<xsd:all>
<xsd:element name="language" type="xsd:string" default="xx"></xsd:element>
<xsd:element name="siteAPIKey" type="xsd:string" default="xxxx"></xsd:element>
<xsd:element name="userID" type="xsd:int" default="-1"></xsd:element>
<xsd:element name="sessionID" type="xsd:string" default="-1"></xsd:element>
<xsd:element name="returnDataFormat" type="xsd:string" default="XX"></xsd:element>
</xsd:all>
</xsd:complexType>
</xsd:schema>
</types>

我这样调用它

<wsdl:message name="getXXRequest">
<wsdl:part name="requestDescriptor" type="xsd1:RequestDescriptor"/>
</wsdl:message>
<wsdl:message name="getXXResponse">
<wsdl:part name="getXXResponse" type="xsd:anytype"/>
</wsdl:message>

在 php 中我使用这段代码来映射复杂类型

$soapClient = new SoapClient($soapServiceURL,array("classmap"=>array("RequestDescriptor","RequestDescriptor")));

当我调用我在服务器中获得的任何函数时记录此消息

PHP Catchable fatal error: Argument 1 passed to xx::XXX() must be an instance of RequestDescriptor, instance of stdClass given

但它运行并按预期返回结果任何线索如何修复此 {PHP Catchable fatal error}

最佳答案

您声称要发送的 RequestDescriptor 类除了作为结构/变量持有者之外还有其他功能吗?如果不是,则删除类映射并继续在其中抛出 stdClass 对象。

如果它做了其他事情,您将不得不追踪 哪里 传递了一个 stdClass 对象而不是 RequestDescriptor 实例(可能在您不知道的位置预计,因为请求会失败 AFAIK,所以处理了更多的请求)。来自那个实例的回溯可以帮助你很多,可能会扩展你的 soapclient 类与另一个具有自定义 __call() 方法的显式测试,做一个 debug_print_backtrace()当错误情况发生时,或者在一切正常时调用 parent::__call()

关于php - 如何将复杂类型映射到现有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3413395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com