Heim > Backend-Entwicklung > PHP-Tutorial > nusoap übergibt ein Array von Objekten

nusoap übergibt ein Array von Objekten

WBOY
Freigeben: 2016-07-30 13:30:11
Original
1245 Leute haben es durchsucht

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

Das letzte Mal habe ich nuSOAP erfolgreich zum Übertragen von Objekten verwendet, während Im eigentlichen Produktionsprozess gibt es oft eine weitere Anforderung, nämlich die Remote-Rückgabe eines Arrays von Objekten. Es hat einen Nachmittag gedauert, bis ich es endlich erfolgreich getestet habe, daher kann ich es kaum erwarten, es mit allen zu teilen:)

Vorbereitung

Zuerst eine Klasse definieren Benutzerinfo:

class UserInfo {
var $UserName ;
 
//... var $Sequence;
}

Dann schreiben Sie eine Remote-Methode zum Testen:

nusoap übergibt ein Array von Objekten

Funktion hello() {
$a = new UserInfo();
 
$a->UserName = "Jaypei";
 
$a->Sequenz = 1928388199;
$b = new UserInfo();
 
$b-> Benutzername = "cnblogs";
$b->Sequenz = 83910021 ;
 
return array($a, $b);
}

nusoap übergibt ein Array von Objekten


a Das gewöhnliche nuSOAP-Programm lautet wie folgt: (Der gesamte Prozess ist eine Modifikation davon)

nusoap übergibt ein Array von Objekten

$soap = neu Soap_server();
// Verwenden Sie UTF- 8$soap->soap_defencoding = 'UTF-8';
$soap->decode_utf8 = false;
// WSDL-Namespace muss festgelegt werden, vorausgesetzt, jaypei.cnblogs 🎜> ', 'urn:jaypei.cnblogs.com');//... ...$soap-> register(
'Hallo');$soap->service($HTTP_RAW_POST_DATA
);

Transformationsprozess Registrieren Sie zunächst einen zusammengesetzten Typ von UserInfo wie folgt: (Dies wurde bereits geschrieben)

nusoap übergibt ein Array von Objekten

$soap->wsdl->addComplexType(
    
'UserInfo', 
    
'complexType', 
    
'struct', 
    
'alle',
    
'' ,
    
array(
        
'Benutzername '=>array('Name'=>'Benutzername', 'type'=>'xsd:string'),
        
'Sequenz'=> array('name'=>'Sequenz', 'Typ'= >'xsd:int')
    ));

nusoap übergibt ein Array von Objekten

这样就可以通过以下方式返回一个单一的 userInfo 对象 : (Hallo 中返回 $ a 或者返回 $ b)

$ soap- & gt; Register (' hello', array(),array('return'=>'tns:UserInfo'));

Sie können dies auch tun找到了返回string或int等基础类型的列表方法,如下:

$soap->register('hello', array(), array('return'=>'SOAP- ENC:Array') );

当这个方法用到自定义复合类型上时类型处会变成:

xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="object[2 ]"

object并不是我们想要的。于是上网找相关资料发现了如下方法:

$soap->register('hello', array() , array('return'=>'tns:UserInfoArray') );

这里要自定义添加一个tns:UserInfoArray的数组类型,方法如下:

nusoap übergibt ein Array von Objekten

$soap->wsdl->addComplexType(
    
'UserInfoArray',
    
' complexType',
    
'array ',
    
'',
    
'SOAP-ENC:Array',
    
array() ,
    
Array(
        
Array( 'ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:UserInfo[]')
    )
,
    
' tns:UserInfo'
);

nusoap übergibt ein Array von Objekten

此时代码部分已完成,但是调用时nuSOAP缺报错了,是一个PHP错误:

Abfangbarer schwerwiegender Fehler: Objekt der Klasse UserInfo konnte nicht in einen String in ...nusoapnusoap.php online konvertiert werden. 600 2

于是找到nusoap.php的6002行看一下为何UserInfo向string转换:

$this->debug("serialisierendes Array-Element: $k, $v vom Typ: $typeDef [arrayType]“);继续调用,OK!通过了,一切顺利.

Hinweis: Ich weiß nicht, ob dieser Fehler darauf zurückzuführen ist, dass meine Verwendungsmethode dem ursprünglichen Design widerspricht oder ob es sich um einen Fehler von nuSOAP selbst handelt, und es gibt keine Probleme Fehler, bitte korrigieren Sie mich.

Das Obige stellt das von nusoap übergebene Objektarray vor, einschließlich des Inhalts. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage