码迷,mamicode.com
首页 > 其他好文 > 详细

NuSOAP笔记:如何创建复杂数据类型

时间:2014-07-03 00:30:52      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   数据   应用   

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扩展中,^_^。

NuSOAP笔记:如何创建复杂数据类型,布布扣,bubuko.com

NuSOAP笔记:如何创建复杂数据类型

标签:style   blog   color   使用   数据   应用   

原文地址:http://www.cnblogs.com/syphper/p/3818657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!