我正在构建一个简单的WebService。我有一个User PHP类和一个webmethod getUser来检索用户的信息。
我已经声明了一个complexType,一切似乎都很完美。
$server->wsdl->addComplexType('User',
'complexType','struct', 'all', '',
array( 'id' => array('name' => 'id', 'type' => 'xsd:int'),
'username' => array('name' => 'username','type' => 'xsd:string'),
'password' => array('name' => 'password','type' => 'xsd:string'),
'email' => array('name' => 'email','type' => 'xsd:string'),
'authority' => array('name' => 'authority','type' => 'xsd:int'),
'isActive' => array('name' => 'isActive','type' => 'xsd:int'),
'area' => array('name' => 'area','type' => 'xsd:string')
)
);
$server->register('ws_getUser',
array('user_id' => 'xsd:integer'),
array('user' => 'tns:User'),
$namespace,
"$namespace#ws_getUser",
'rpc',
'encoded',
'Retorna un usuario'
);
function ws_getUser($user_id){
return new soapval('return', 'tns:User', getUser($user_id));
}
但是,在getUser函数中,我正在将用户信息检索为assoc。数组,而不是用户对象本身。
我想在getUser上做的是返回一个User实例,并让nuSOAP为我序列化。这可能吗?
编辑:我已经尝试返回一个新的User()用于测试目的,但响应是
<user xsi:type="tns:User"/>
答案 0 :(得分:1)
猜猜我在这里找到了可能适用于此案例的答案:http://www.php.net/manual/en/class.soapserver.php
如果要返回自定义对象 来自nusoap webservice的数组,你 必须将对象强制转换为数组 像这样:
<?php
$users = array();
while($res = $db_obj->fetch_row())
{
$user = new user();
$user->Id = $res['id'];
$user->Username = $res['username'];
$user->Email = $res['email'];
$users[] = (array) $user;
}
return ($users);