>백엔드 개발 >PHP 튜토리얼 >nusoap 전달 객체 배열

nusoap 전달 객체 배열

WBOY
WBOY원래의
2016-07-30 13:30:111250검색

원본 텍스트: http://www.cnblogs.com/Jaypei/archive/2009/04/09/1432521.html

마지막으로 nuSOAP를 사용하여 객체를 전송하는 데 성공했습니다. 실제 생산 프로세스에는 원격으로 개체 배열을 반환해야 하는 또 다른 요구 사항이 있는 경우가 많습니다. 마침내 성공적으로 테스트하는 데 오후가 걸렸으므로 모든 사람과 공유하고 싶습니다 :)

준비

먼저 클래스 정의 UserInfo:

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

그런 다음 테스트를 위한 원격 방법을 작성합니다.

nusoap 전달 객체 배열

함수 hello() {
$a = 새로운 UserInfo();
 
$a->사용자 이름 = "제이페이";
 
$a->순서 = 1928388199;
$b = 신규 UserInfo();
 
$b-> 사용자 이름 = "cnblogs";
$b->순서 = 83910021 ;
 
반환 배열($a, $b);
}

nusoap 전달 객체 배열


a 일반적인 nuSOAP 프로그램은 다음과 같습니다. (전체 프로세스는 이를 수정한 것입니다.)

nusoap 전달 객체 배열

$soap = newsoap_server();
// UTF-8$soap->soap_defencoding 사용 = 'UTF-8';
$soap->decode_utf8 = false;
// WSDL 네임스페이스를 설정해야 합니다. jaypei.cnblogs.com$soap->configureWSDL('jaypei.cnblogs.com ', 'urn:jaypei.cnblogs.com');
//... ...$비누-> 등록( '안녕하세요');

$soap->서비스($HTTP_RAW_POST_DATA);

nusoap 전달 객체 배열

변환 과정

먼저 다음과 같이 UserInfo의 복합형을 등록합니다. (이미 작성한 적이 있습니다.)

nusoap 전달 객체 배열

$soap->wsdl->addComplexType(
    
'사용자 정보', 
    
'복합 유형', 
    
'struct', 
    
'모두',
    
'' ,
    
배열(
        
'사용자 이름 '=>배열('이름'=>'사용자 이름', '유형'=>'xsd:string'),
        
'순서'=> 배열('이름'=>'순서', '유형'= >'xsd:int')
    ));

nusoap 전달 객체 배열

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

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

如果要返回一个列表,则需要改动return处的类型。起初找到了返回string或int等基础类型的列表방법,如下:

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

当这个方法 이용到자정义复合类型上时类型处会变成:

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

객체는 并不是我们想要的입니다.于是上网找상关资料发现了如下方법:

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

这里要자정义添加一个tns:UserInfoArray의 数组类型, 방법 아래:

nusoap 전달 객체 배열

$비누->wsdl->addComplexType(
    
'UserInfoArray',
    
' 복합 유형',
    
'배열 ',
    
'',
    
'SOAP-ENC:배열',
    
배열() ,
    
배열(
        
배열( 'ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:UserInfo[]')
    )
,
    
' tns:UserInfo'
);

nusoap 전달 객체 배열

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

잡을 수 있는 치명적인 오류: UserInfo 클래스의 개체가 6002행의 ...nusoapnusoap.php에서 문자열로 변환될 수 없습니다.

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

$this->debug("직렬화 배열 요소: $k, $v 유형: $typeDef [arrayType]");

代码没多看, 不过很明显只是个debug는 代码, 没什么实际 창작용입니다.了,一切顺利。

참고: 이 오류는 내 사용 방법이 설계 의도를 위반했기 때문인지, 아니면 nuSOAP 자체의 버그인지 알 수 없습니다. 일부 응용 프로그램을 반복적으로 나열했는데 실수가 있으면 성공한 것으로 간주됩니다. , 정정해주세요.

위 내용을 포함하여 nusoap이 전달하는 객체 배열을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.