원본 텍스트: http://www.cnblogs.com/Jaypei/archive/2009/04/09/1432521.html
마지막으로 nuSOAP를 사용하여 객체를 전송하는 데 성공했습니다. 실제 생산 프로세스에는 원격으로 개체 배열을 반환해야 하는 또 다른 요구 사항이 있는 경우가 많습니다. 마침내 성공적으로 테스트하는 데 오후가 걸렸으므로 모든 사람과 공유하고 싶습니다 :)
준비
먼저 클래스 정의 UserInfo:
class UserInfo {
var $UserName ;
//... var $Sequence;
}
그런 다음 테스트를 위한 원격 방법을 작성합니다.
함수 hello() {
a 일반적인 nuSOAP 프로그램은 다음과 같습니다. (전체 프로세스는 이를 수정한 것입니다.)
$soap = newsoap_server();
$soap->서비스($HTTP_RAW_POST_DATA);
변환 과정
먼저 다음과 같이 UserInfo의 복합형을 등록합니다. (이미 작성한 적이 있습니다.)
$soap->wsdl->addComplexType(
这样就可以通过以下方式返回一个单一的UserInfo对象:(hello中返回$a或者返回$b)
$soap->register(' hello', array(),array('return'=>'tns:UserInfo'));
如果要返回一个列表,则需要改动return处的类型。起初找到了返回string或int等基础类型的列表방법,如下:
当这个方法 이용到자정义复合类型上时类型处会变成:
xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="객체[2 ]"
객체는 并不是我们想要的입니다.于是上网找상关资料发现了如下方법:
$soap->register('hello', array(), array('return'=>'tns:UserInfoArray') );
这里要자정义添加一个tns:UserInfoArray의 数组类型, 방법 아래:
$비누->wsdl->addComplexType(
此时代码part已完成,但是调用时nuSOAP缺报错了,是一个PHP错误:
잡을 수 있는 치명적인 오류: UserInfo 클래스의 개체가 6002행의 ...nusoapnusoap.php에서 문자열로 변환될 수 없습니다.
于是找到nusoap.php的6002行看一下为何UserInfo向string转换:
$this->debug("직렬화 배열 요소: $k, $v 유형: $typeDef [arrayType]");
代码没多看, 不过很明显只是个debug는 代码, 没什么实际 창작용입니다.了,一切顺利。
위 내용을 포함하여 nusoap이 전달하는 객체 배열을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.