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