首頁  >  文章  >  後端開發  >  nusoap傳遞物件數組

nusoap傳遞物件數組

WBOY
WBOY原創
2016-07-30 13:30:111174瀏覽

原文:http://www.cnblogs.com/Jaypei/archive/2009/04/09/1432521.html

上一次成功的使用nuSOAP傳遞對象,實際生產過程中常還有另一個需求,就是遠端傳回物件數組。花了一下午的時間終於成功測試成功,於是迫不及待的拿出來跟大家分享:)

準備工作

先定義一個類別UserInfo:

$UserName
;    //...    
接著寫一個測試用的遠端方法: function hello() {    
$a

 
); 

$a

->nusoap傳遞物件數組UserName 

= 
"Jaypei";    $a->
;    $b = new  UserInfo();    $b
->
UserName =   $b->Sequence 
=  83910021;    return 
array );}一個普通的nuSOAP程式如下:(整個過程是對它的改造)
$soap  // 使用UTF- 8$soap->
soap_defencoding = 'UT >decode_utf8 =  false
;

//nusoap傳遞物件數組 需設定WSDL命名空間,假設jaypei.cnblogs.com

$soap

->
cns5

,

 nusoap傳遞物件數組'

urn:jaypei.cnblogs.com');// '
hello
');$soap->service(?); 改造過程首先,註冊一個UserInfo的複合型,方法如下:(這個之前已寫過)
$soap->wsdl->addComplex類型(
    
 'complex類型',
      'struct',
     ' ,
    
array(        ' UserName
'
=>array(
'name
'
=>name'=>name'  'type '=>'xsd:string'), =>array('name '=>'
Sequence
', ', ' xsd:int')    ) );這樣就可以透過以下方式回傳一個單一的UserInfo物件:(hello中回傳$a或回傳$b)$soap->register('hello', array(), array(), array('return'=>'tns:UserInfo'));如果要返回一個列表,則需要改動return處的類型。起初找到了返回string或int等基礎類型的列表方法,如下:$soap->register('hello', array(), array('return'=>'SOAP-ENC:Array') ) ; 當這個方法用到自訂複合類型上時類型處會變成:xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="object[2]"object並不是object[2]"
object並不是我們想要的。於是上網找相關資料發現瞭如下方法:

$soap->register('hello', array(),nusoap傳遞物件數組 array('return'=>'tns:UserInfoArray') );

這裡要自訂新增一個tns:UserInfoArray的陣列類型,方法如下:


$soap

->

wsdl

$soap

->

UserInfoArray

',

    

'nusoap傳遞物件數組complex類型

',        ''
,
    'SOAP-ENC :Array'
,
    array()    
array
('ref'=>
'SOAP-ENC:arrayType'
,
'wsdl:arrayType' )    )
,
    'tns:UserInfo
'
);3 PHP錯誤:
Catchable fatal error: Object of class UserInfocould not be converted to string in ...nusoapnusoap.php on line 6002於是找到如何轉換完. ("serializing array element: $k, $v of type: $typeDef[arrayType]");代碼沒有多看,不過很明顯只是個debug的代碼,沒什麼實際作用。於是直接註解掉繼續調用,OK!通過了,一切順利。 註:這個錯誤現在還不知是因為我的使用方法有違了設計本意還是nuSOAP本身的bug,反覆列舉了一些應用都沒有什麼問題後就算是成功了,如果有什麼錯誤還請大家指正。

以上就介紹了nusoap傳遞物件數組,包含了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn