gpt4 book ai didi

php - 从 PHP SoapServer 返回一个 PHP 数组

转载 作者:可可西里 更新时间:2023-11-01 00:07:53 26 4
gpt4 key购买 nike

在“创建服务端”方面,我对 Soap 比较陌生,所以对于我正在使用的任何术语,请提前表示歉意。

是否可以从使用 PHP 的 SoapServer 类设置的远程过程 Soap 服务返回 PHP 数组?

我有一个 WSDL(通过盲目遵循教程构建),部分看起来像这样

<message name='genericString'>
<part name='Result' type='xsd:string'/>
</message>

<message name='genericObject'>
<part name='Result' type='xsd:object'/>
</message>

<portType name='FtaPortType'>
<operation name='query'>
<input message='tns:genericString'/>
<output message='tns:genericObject'/>
</operation>
</portType>

我正在调用的 PHP 方法名为查询,看起来像这样

public function query($arg){
$object = new stdClass();
$object->testing = $arg;
return $object;
}

这让我可以调用

$client = new SoapClient("http://example.com/my.wsdl");
$result = $client->query('This is a test');

结果的转储看起来像

object(stdClass)[2]
public 'result' => string 'This is a test' (length=18)

我想从我的查询方法返回一个本地 PHP 数组/集合。如果我更改我的查询方法以返回一个数组

public function query($arg) {
$object = array('test','again');
return $object;
}

它在客户端被序列化为一个对象。

object(stdClass)[2]
public 'item' =>
array
0 => string 'test' (length=4)
1 => string 'again' (length=5)

这是有道理的,因为我在我的 WSDL 中指定了一个 xsd:object 作为结果类型。如果可能的话,我想返回一个未包装在对象中的 native PHP 数组。我的直觉告诉我有一个特定的 xsd:type 可以让我完成这个,但我不知道。我也愿意将对象序列化为 ArrayObject

请不要阻止我学习 WSDL 的技术细节。我正在尝试掌握 fo 的基本概念

最佳答案

小技巧 - 编码为 JSON 对象,解码回递归关联数组:

$data = json_decode(json_encode($data), true);

关于php - 从 PHP SoapServer 返回一个 PHP 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1174979/

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