2011-07-22 9 views
0

私はsoapサーバーを構築するためにnuSoapで作業しています。 しかし、私が望む方法で属性を得ることはできません。PHPでNuSoapで属性を設定するにはどうすればよいですか?

私は戻り値として希望:

<return xsi:type="tns:Taxatie"> 
    <EmailAdres OptIn="1" xsi:type="tns:string">[email protected]</EmailAdres> 
</return> 

と私は得る:

<return xsi:type="tns:Taxatie"> 
    <EmailAdres OptIn="1" xsi:type="tns:EmailAdres"> 
     <EmailAdres xsi:type="xsd:string">[email protected]</EmailAdres> 
    </EmailAdres> 
</return> 

は私が変更しなければならないことをだれにも知っていますか?

どのように配列を設定する必要がありますか?

これは私のテストコードです:事前

答えて

0

<?php 
require_once("nusoap.php"); 
$soapserver = new nusoap_server(); 
$soapserver->configureWSDL('thijs.test', 'urn:thijs.test'); 

$soapserver->wsdl->addComplexType(
    'Taxatie', 
    'complexType', 
    'struct', 
    'all', 
    '', 
    array(
     'EmailAdres' => array('name' => 'EmailAdres', 'type' => 'tns:EmailAdres') 
    ) 
); 

$soapserver->wsdl->addComplexType(
    'EmailAdres', 
    'simpleType', 
    'struct', 
    'all', 
    '', 
    array(
     "EmailAdres" => array('name' => 'EmailAdres', 'type' => 'xsd:string', 'minOccurs' => 0) 
    ), 
    array(
     'OptIn' => array('name' => 'OptIn', 'type' => 'xsd:boolean', 'use' => 'required') 
    ) 
); 

$soapserver->register('taxatie',     // method name 
    array(),   // input parameters 
    array('return' => 'tns:Taxatie'), // output parameters 
    'urn:thijs.test',       // namespace 
    'urn:thijs.test#taxatie',     // soapaction 
    'rpc',         // style 
    'encoded',        // use 
    'return something'  // documentation 
); 

class taxatie 
{ 
    var $EmailAdres = null; 

    function taxatie() 
    { 
     $this->EmailAdres = new emailadres(); 
    } 
} 

class emailadres 
{ 
    var $EmailAdres = '[email protected]'; 
    var $OptIn = true; 
} 

function taxatie() 
{ 
    return new taxatie(); 
} 

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; 
$soapserver->service($HTTP_RAW_POST_DATA); 

おかげで、なぜ単純に配列を返す代わりに、複合型を使用していませんか?

例えば

$resultarray['taxatie'] = array(
    'EmailAdres' => $row["EmailAdres"], 
    'tagcount' => $row["tagcount"], 
    'OptIn'  => $row["OptIn"] 
); 
関連する問題