Как я могу установить атрибуты с NuSoap в PHP? - PullRequest
0 голосов
/ 22 июля 2011

Я работаю с nuSoap для создания мыльного сервера. Но я не могу получить атрибуты так, как я хочу.

Я хотел бы получить в качестве возвращаемого значения:

<return xsi:type="tns:Taxatie">
    <EmailAdres OptIn="1" xsi:type="tns:string">email@domain.com</EmailAdres>
</return>

И я получаю:

<return xsi:type="tns:Taxatie">
    <EmailAdres OptIn="1" xsi:type="tns:EmailAdres">
        <EmailAdres xsi:type="xsd:string">email@domain.com</EmailAdres>
    </EmailAdres>
</return>

Кто-нибудь знает, что я должен изменить?

Или как мне настроить массивы?

Это мой тестовый код:

<?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@domain.com';
    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);

Заранее спасибо

1 Ответ

0 голосов
/ 28 марта 2012

Почему бы просто не вернуть массив вместо использования сложного типа?

* 1003 например *

$resultarray['taxatie'] = array(
  'EmailAdres'  => $row["EmailAdres"], 
  'tagcount'    => $row["tagcount"], 
  'OptIn'       => $row["OptIn"]
);
...