脚本宝典收集整理的这篇文章主要介绍了在PHP Web服务中返回一个对象数组,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
$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','array','SOAP-ENC:Array',array(),array( array('ref' => 'SOAP-ENC:arrayType','wsdl:arrayType' => 'tns:ArticleType[]' // ArticleType[] ) ),'tns:ArticleType' );
class Article { public $articleId; public $heading; public $text; public function __construct($articleId,$heading,$text=NULL) { $this->articleId = $articleId; $this->heading = $heading; $this->text = $text; } }
function testArrayReturn() { $arr = new Article(12345,"Test heading","Test text."); //$arr2 = array($arr); return $arr; }
$server->register("TestArrayReturn",array('return'=>'tns:ArticleType'),$namespace,$namespace."#TestArrayReturn",'rpc','encoded','Test function');
工作正常,并返回文章,就好像它是一个数组.但是,如果我尝试返回一个ArrayOfArticleType(TestArrayReturn()中的注释行),并将该函数注册为返回类型tns:ArrayOfArticleType,则它将失败并显示错误:HTTP错误:HTTP标头后没有数据.
但是,如果我手动创建ARRAY OF ARRAYS,如下所示:
$arr = array("articleId"=>12345,"heading"=>"Test heading","text"=>"Test text"); $arr2 = array("articleId"=>12345,"text"=>"Test text"); return array($arr,$arr2);
有用!?我的ArrayOfArticleType WSDL描述有什么问题,它不允许它正确序列化ArticleType对象,但是正确地序列化具有相同属性的关联数组(“articleId”,“heading”,“text”)??
// Set return value for the service $return = array(); if ($method['#return']) { **// Don't let a struct be declared as return parameter,because nusoap will not // Send back anything.** $return['return'] = 'xsd:'. $method['#return']; if ($method['#return'] == 'struct' || $method['#return'] == 'array') { $return['return'] = 'xsd:Array'; } }
希望这可以帮助那些努力解决同样问题的人.
以上是脚本宝典为你收集整理的在PHP Web服务中返回一个对象数组全部内容,希望文章能够帮你解决在PHP Web服务中返回一个对象数组所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。