我有3个课程:server
,client
,service
。用于实现SOAP Web服务。
service
构造一个关联数组,然后将其传递给client
,最后将其传递给server
。并发回一条回复。
相关代码:
service.php
<?php
include './client.php';
$id_array = array("country_code"=> "+36");
echo $client->getName($id_array);
?>
client.php
public function getName($id_array)
{
return $this->instance->__soapCall('getCountryName', $id_array);
}
和server.php
public function getCountryName($id_array)
{
$country_code = array();
$country_code = $id_array['country_code'];
//this return value to debug (not actual function)
return $country_code;
}
问题发生在:$country_code = $id_array['country_code'];
此时$country_code
的值为+
,而不是+36
。
为什么会这样?
P.S。 __soapCall将$id_array
传递给getCountryName()
中的server.php
函数
此外,如果我使用长度为1的$country_code
,一切都按预期工作。
答案 0 :(得分:2)
我不是SOAP用户,但我相信__soapCall('getCountryName', $id_array)
应该是__soapCall('getCountryName', array($id_array))
。
为什么呢?因为每个数组索引都被映射到被调用的服务器方法中的参数。
所以,我认为在服务器方法中,$id_array
的值是国家/地区代码字符串的第一个字符,如果您在方法参数列表中添加了$id_array2
,那么可能是字符串中的第二个。
如果情况确实如此,那么您可能会抱怨通知/警告(检查您的错误日志)抱怨非法抵消。