首页 > 代码库 > NuSOAP笔记:如何创建复杂数据类型
NuSOAP笔记:如何创建复杂数据类型
PHP已经有了内置的SOAP扩展,但是它不具备自动生成WSDL的能力,所以很多时候,NuSOAP还是有一定诱惑力的。
在应用稍微复杂点的时候,单靠integer, string等简单数据类型是不能满足需要的,这时候,就需要创建复杂数据类型,下面看看在NuSOAP中应该怎么做:
假设我们的应用里有一个“Member”对象,它有id,username,还有friends,直观一点表示,可能是类似下面的结构:
Array( [id] => ... [username] => ... [friends] => Array ( [0] => Array ( [id] => ... [username] => ... [friends] => Array(...) ) [1] => Array ( [id] => ... [username] => ... [friends] => Array(...) ) ))
这里稍显复杂的地方就是有一点点递归的味道。下面看看用NuSOAP是如何表示这个数据类型的:
$nusoap->wsdl->addComplexType( ‘Members‘, ‘complexType‘, ‘array‘, ‘‘, ‘SOAP-ENC:Array‘, array(), array( array( ‘ref‘ => ‘SOAP-ENC:arrayType‘, ‘wsdl:arrayType‘ => ‘tns:Member[]‘ ) ), ‘tns:Member‘);$nusoap->wsdl->addComplexType( ‘Member‘, ‘complexType‘, ‘struct‘, ‘all‘, ‘‘, array( ‘id‘ => array(‘name‘ => ‘id‘ , ‘type‘ => ‘xsd:integer‘), ‘username‘ => array(‘name‘ => ‘username‘, ‘type‘ => ‘xsd:string‘), ‘friends‘ => array(‘name‘ => ‘friends‘ , ‘type‘ => ‘tns:Members‘) ));
如果使用的是PHP内建的SOAP扩展的话,应该怎么创建复杂数据类型呢?答案很简单:手写WSDL创建复杂数据类型!因为PHP内建的SOAP扩展不支 持动态生成WSDL,所以只能手写,当然,如果你不了解WSDL规范,也可以先用NuSOAP生成一套,然后用到PHP内建的SOAP扩展中,^_^。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。