首页 理论教育ThinkPHP生成SOAP服务|PHPMVC开发实战

ThinkPHP生成SOAP服务|PHPMVC开发实战

【摘要】:接下将继续以ThinkPHP 3.0为例,详细介绍在MVC的中SOAP服务端开发,步骤如下。然后在home项目中创建api控制器,该控制器用于SOAP服务绑定,首先创建article.wsdl服务绑定,如以下代码所示。图12-15 WSDL绑定出错接下来需要在article.wsdl文件中创建相应的操作及服务绑定。并且建立http://tp.localhost/index.php/api/Article服务绑定地址。至此,一个article.wsdl SOAP服务就创建完成了,接下来就可以使用专业的SOAP测试工具或者在PHP中直接调用该服务。

使用SoapServer类中的setClass方法可以将一个PHP类中的所有方法添加为WSDL操作。根据这个原理,我们可以将一个模型作为WSDL消息体。这是MVC开发优势所在,也是本书始终贯穿的主题。在MVC中,开发人员在设计完一个模型后,后期的扩展是非常灵活的,一个模型的展现层可以是HTML、Json、XML或者SOAP。接下将继续以ThinkPHP 3.0为例,详细介绍在MVC的中SOAP服务端开发,步骤如下。

首先在当前应用中创建一个根目录,并命名为api,该目录用于存放WSDL文件,所以需要确保用户能够访问到该目录。按照前面介绍过的方法,创建一个WSDL文件,并命名为article.wsdl,该文件对应ArticleModel模型。如图12-14所示。

978-7-111-42852-7-Part02-719.jpg

图12-14 article.wsdl文件结构图

接下来在home项目中创建Article用户模型,该模型即为article.wsdl文件的消息类体。为了方便演示,这里只需要创建两个公开方法即可,如以下代码所示。

978-7-111-42852-7-Part02-720.jpg

然后在home项目中创建api控制器,该控制器用于SOAP服务绑定,首先创建article.wsdl服务绑定,如以下代码所示。

978-7-111-42852-7-Part02-721.jpg

此时通过http://tp.localhost/index.php/api/Article访问Article动作,因为还没有在article.wsdl建立服务绑定,但在Article动作中已经声明绑定,所以出现错误,如图12-15所示。

978-7-111-42852-7-Part02-722.jpg(www.chuimin.cn)

图12-15 WSDL绑定出错

接下来需要在article.wsdl文件中创建相应的操作及服务绑定。这里将创建getUserArticleAll操作及getIdArticle操作。并且建立http://tp.localhost/index.php/api/Article服务绑定地址

需要注意的是,在WSDL中PATHINFO URL模式是无效的,所以上述绑定地址是不被SOAP认可的,解决办法是隐藏index.php入口文件,或者使用传统显式传参模式(普通模式)以及REWRITE模式。完成后article.wsdl设计视图如图12-16所示。

978-7-111-42852-7-Part02-723.jpg

图12-16 article.wsdl文件设计视图

最终article.wsdl文件的源代码如下所示。

978-7-111-42852-7-Part02-724.jpg

978-7-111-42852-7-Part02-725.jpg

至此,一个article.wsdl SOAP服务就创建完成了,接下来就可以使用专业的SOAP测试工具或者在PHP中直接调用该服务。