gpt4 book ai didi

PHP SoapClient 类型映射的行为不同

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:06:46 26 4
gpt4 key购买 nike

我有一个 Web 服务函数,它向 PHP 客户端返回一组项目。根据项目的数量,PHP 返回类型不同。如果函数返回一项,则 PHP 类型为 stdClass 如果函数返回多项,则 PHP 类型为 array。在任何一种情况下,它都应该是 array。我该怎么做才能实现这一目标?

详细信息:

来自网络服务函数的结果的 var_dump 如下所示:

  • 如果结果中有一项:
    array(3) { ["filterErg"]=> object(stdClass)#37 (1) { ["item"]=> object(stdClass )#38 (9) ...
  • 如果结果中有多个项目:
    array(3) { ["filterErg"]=> object(stdClass)#37 (1) { ["item"]=> array (16) ...

函数的名称是getFilter,WSDL 文件的相关部分是:

<types>
<schema ...>
<complexType name="arrayFilter">
<sequence>
<element name="item" type="ns1:stFilter" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</sequence>
</complexType>
...
</schema>
</types>

<message name="getFilterResponse">
<part name="filterErg" type="ns1:arrayFilter"/>
<part name="functionResult" type="xsd:int"/>
<part name="outErr" type="xsd:string"/>
</message>

<portType name="ADServicePortType">
<operation name="getFilter">
<documentation>Service definition of function ns1__getFilter</documentation>
<input message="tns:getFilter"/>
<output message="tns:getFilterResponse"/>
</operation>
...
</portType>

<binding name="ADService" type="tns:ADServicePortType">
<SOAP:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getFilter">
<SOAP:operation style="rpc" soapAction=""/>
<input>
<SOAP:body use="encoded" namespace="urn:ADService" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<SOAP:body use="encoded" namespace="urn:ADService" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
...
</binding>

最佳答案

创建 SoapClient 时可以使用 SOAP_SINGLE_ELEMENT_ARRAYS 选项

$soapConfig = array(
'soap_version' => SOAP_1_2,
'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
'trace' => true
);
$client = new SoapClient('http://localhost:8070/Services.wsdl', $soapConfig);

关于PHP SoapClient 类型映射的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6408283/

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