Published on WSO2 Oxygen Tank (http://wso2.org)

Questions about return array

By faborm
Created 2008-05-19 06:06

Hi,

I have one question about return arrays in WSF/PHP using WSDL generate mode.

Is there a way to return a vector without being connected to a variable?
 
Example:
-----------------------------
Wrong: (using wsf/php for create service. The out in client is:)
 

AtualizarDisciplinaResponseWrapper Object

(
    [disciplinas] => Array
        (
            [0] => Array
                (
                    [codigo] => a
                    [nome] => b
                    [numCreditos] => c
                    [cargaHoraria] => d
                )

)

----------------------------------

Right: (I want this)

 

Array
(
   [0] => Array
       (
            [codigo] => a
            [nome] => b
            [numCreditos] => c
            [cargaHoraria] => d
       )

)

-----------------------------------------------------

My php service source

/**

 * Classe de Disciplina

 * @namespace http://test/

 */

class Disciplina {



    /**

     * @var string $codigo

     * (xsd:string)

     */

    public $codigo;

   

    /**

     * @var string $nome

     * (xs:string)

     */

    public $nome;

   



    /**

     * @var float $numCreditos

     * (xs:float)

     */

    public $numCreditos;

   

    /**

     * @var int $cargaHoraria

     * (xs:int)

     */

    public $cargaHoraria;

   

    public function __construct($codigo,$nome,$numCreditos,$cargaHoraria) {

        $this->codigo = $codigo;

        $this->nome = $nome;

        $this->numCreditos = $numCreditos;

        $this->cargaHoraria = $cargaHoraria;

    }



}

 

/**

 * Retorna um vetor de objetos do tipo disciplina

 * @return array of object Disciplina $disciplinas

 */

function AtualizarDisciplina() {

    $voDisciplina = array();

   

    for ($i = 0; $i <= 3; $i++) as $dbDisciplina ):

       

        $codigo = 'a';

        $nome = 'b';

        $creditos = 2;

        $cargahoraria = 3;

        $voDisciplina[$i] = new Disciplina($codigo,$nome,$creditos,$cargahoraria);

       

    endfor;



    return array("disciplinas" => $voDisciplina);

}

 

My php client source

 

class Disciplina {



    public $codigo;



    public $nome;

   

    public $numCreditos;



    public $cargaHoraria;

   

    public function getCodigo() { return $this->codigo; }

   

    public function getNome() { return $this->nome; }

   

    public function getNumCreditos() { return $this->numCreditos; }

   

    public function getCargaHoraria() { return $this->cargaHoraria; }

   

}

class AtualizarDisciplinaRequestWrapper

{

   

}



class AtualizarDisciplinaResponseWrapper

{

    public $disciplinas;

}



$class_map = array("AtualizarDisciplina" => "AtualizarDisciplinaRequestWrapper",

                   "AtualizarDisciplinaResponse" => "AtualizarDisciplinaResponseWrapper",

                   "Disciplina" => "Disciplina");

 

$client = new WSClient(array("wsdl" => "http://localhost/~fabio/wso2service/service.php?wsdl",

                                              "classmap" => $class_map));



$proxy = $client->getProxy();      



$input = new AtualizarDisciplinaRequestWrapper();

   

$val = $proxy->AtualizarDisciplina($input);



print "<pre>";

print_r ($val);

print "</pre>";

 

Somebody help, please


Source URL:
http://wso2.org/forum/thread/3606