login button

Questions about return array

Forums :

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

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

No, I think you can't

Hi I think you can't return just array without a variable name as you suggested. Because

the array you provided like this

AtualizarDisciplinaResponseWrapper Object

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

will be converted to a message (soap payload only shwn) like this,

<AtualizarDisciplinaResponse>

    <disciplinas> <!-- 0 th element -->

        <codigo>a</codigo>

        ...

    </disciplinas>

    <disciplinas> <!-- 1st element -->

        <codigo>a</codigo>

        ...

    </disciplinas>

</AtualizarDisciplinaResponse>

 

So it s clear you have to have that  "disciplinas" xml tag to return an array.

 

Thanks

Dimuthu

Ok, but...

Thanks for answer, but somebody have other anwser about subject?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.