繁体   English   中英

如何将PHP对象编码为nuSOAP响应?

[英]How to encode PHP object to nuSOAP response?

我正在构建一个简单的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函数上,我正在以关联方式检索用户信息。 数组,而不是用户对象本身。

我想对getUser进行的操作是返回一个User实例,然后让nuSOAP为我序列化它。 这可能吗?

编辑:我试图返回一个新的User()进行测试,但响应是

<user xsi:type="tns:User"/>

猜猜我在这里找到了可能适用于这种情况的答案: http : //www.php.net/manual/en/class.soapserver.php

如果要从nusoap Web服务返回自定义对象数组,则必须将对象强制转换为数组,如下所示:

<?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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM