如何在服务器端使用php实例化Nusoap的ComplexType?

时间:2016-02-04 19:18:32

标签: php nusoap

我正在使用php中的nusoap库编写一个简单的Web服务方法。 我已经在服务器端创建了一个complextype(struct),但我想在方法中实例化该结构,以便我可以返回它。我在here中看到了一个示例,但使用了关键字" new "不起作用。它没有看到ComplexType。 那么如何在LoginTest函数中创建新的ComplexLogin结构?

  //ComplexLoginType
 $server->wsdl->addComplexType('ComplexLogin','complexType','struct','all','',
array( 
    'EnterpriseId' => array('name' => 'EnterpriseId','type' => 'xsd:int'),
    'FirstName' => array('name' => 'FirstName','type' => 'xsd:string'),
    'Password' => array('name' => 'Password','type' => 'xsd:string'))
    );


$server->register(
// method name:
'LoginTest',
// parameter list:
array('name'=>'tns:ComplexLogin'),
// return value(s):
array('return'=>'tns:ComplexLogin'),
// namespace:
$namespace,
// soapaction: (use default)
false,
// style: rpc or document
'rpc',
// use: encoded or literal
'encoded',
// description: documentation for the method
'Login Method'
 );

1 个答案:

答案 0 :(得分:0)

我不能直接实例化ComplexType,但如果我使用数组,它可以正常工作。 但是我想知道是否有另一种方法可以在不使用数组的情况下返回ComplexType?

我在服务器端的完整工作功能;

function LoginTest($mycomplexlogin)
{
    $conn=openConnection();
    // Check connection
    if ($conn->connect_error)
    {
        //return("Connection failed: " . $conn->connect_error);
        return NULL;
    } 
    $EnterpriseId=mysqli_real_escape_string($conn,$mycomplexlogin["EnterpriseId"]);
    $FirstName=mysqli_real_escape_string($conn,$mycomplexlogin["FirstName"]);
    $Password=mysqli_real_escape_string($conn,$mycomplexlogin["Password"]);

    $result=array('EnterpriseId'=>$EnterpriseId, 'FirstName'=>$FirstName,'Password'=>$Password);
    return $result;
}