Retourner Un Tableau d'Objets en PHP Web Service

Je veux retourner un tableau de l'article objets dans PHP, web service, à l'aide de nuSOAP v 1.114. Voici comment j'ai configuré le fichier WSDL:

$server->wsdl->addComplexType(
'ArticleType',
'complexType',
'struct',
'all',
'',
array('articleId' => array('name'=>'articleId', 'type'=>'xsd:int'),
      'heading' => array('name'=>'heading', 'type'=>'xsd:string'),
      'text' => array('name'=>'text', 'type'=>'xsd:string')
     )
); 


$server->wsdl->addComplexType(
'ArrayOfArticleType',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
    array('ref' => 'SOAP-ENC:arrayType',
          'wsdl:arrayType' => 'tns:ArticleType[]'       //ArticleType[]
        )               
    ),
'tns:ArticleType'
);

Mon PHP Article de classe est très simple:

class Article {
public $articleId;
public $heading;
public $text;

public function __construct($articleId, $heading, $text=NULL) {
    $this->articleId = $articleId;
    $this->heading = $heading;
    $this->text = $text;
}
}

Si je reviens juste d'un nouvel Article Objet, comme ceci:

function TestArrayReturn() {
    $arr =  new Article(12345, "Test heading", "Test text.");
    //$arr2 = array($arr);  
    return $arr;
 }

la fonction, enregistré comme:

$server->register("TestArrayReturn", array(), array('return'=>'tns:ArticleType'), $namespace, $namespace."#TestArrayReturn", 'rpc', 'encoded', 'Test function');

fonctionne très bien, et renvoie l'article comme si c'est un Tableau. Cependant, si je l'ai essayer et renvoyer un ArrayOfArticleType (la ligne commentée dans TestArrayReturn() ), et de s'inscrire à la fonction de type de retour tns:ArrayOfArticleType, alors il échoue avec l'Erreur: Erreur HTTP: pas de données après les en-têtes HTTP.

Si, toutefois, j'ai créer un TABLEAU de TABLEAUX manuellement, comme suit:

$arr = array("articleId"=>12345, "heading"=>"Test heading", "text"=>"Test text");
$arr2 = array("articleId"=>12345, "heading"=>"Test heading", "text"=>"Test text");
return array($arr, $arr2);

ça marche!? Quel est le problème avec mon ArrayOfArticleType description WSDL qui ne permet pas à sérialiser correctement ArticleType objets, mais sérialiser correctement un tableau associatif avec les mêmes propriétés ("articleId", "titre", "texte") ??

Désolé pour le code, mais je pense qu'il est nécessaire d'identifier l'erreur, je suis surplombant. Toute aide appréciée, j'ai eu du mal avec la mise en place du WSDL de ce service que pour des jours.

OriginalL'auteur gouwsmeister | 2009-09-22