龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

利用PHP创建由Oracle驱动的SOAP服务(1)(3)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
生成WSDL 尽管前面的示例确实是一个用于创建 SOAP 服务的完整 PHP 脚本,但它根本没有解决 WSDL 文档的问题。查看 WSDL 文档是整个过程的一个重要组成部分

生成WSDL

尽管前面的示例确实是一个用于创建 SOAP 服务的完整 PHP 脚本,但它根本没有解决 WSDL 文档的问题。查看 WSDL 文档是整个过程的一个重要组成部分,生成 WSDL 文档则需要采取一些额外的操作。

遗憾的是,由于 PHP 的无类型本质,目前 PHP 还不能像强类型化语言(如 Java)或 .NET 服务那样拥有即席自动生成 WSDL 文档的合理方法。WSDL 文档必须指定每个参数的类型,因此您需要使用其他方法在脚本中表达,因为变量 $a 和 $b 提供的是非类型化信息。有多种选择可用:

◆自己手动编写 WSDL 文档。

◆通过手动输入每个方法和类型化信息,使用基于 Web 的 WSDL 生成器来生成文件。

◆使用 Zend Studio 的自动 WSDL 生成器。

尽管这三个选择都可行,但我将演示如何使用 Zend Studio 的 WSDL 生成器来生成 WSDL 文档,原因有两个:第一,这是目前为止生成 WSDL 文档的最简单、最可靠的方法;第二,Zend Studio 几乎在每个正规的 PHP 柜台都有售。

为了使用 Studio WSDL 生成器生成 WSDL 文档,您首先必须为每个公开方法识别其参数的类型化信息,然后使用名为 PHPDoc(常用 JavaDoc 的 PHP 版本)的内嵌文档注释来返回值。PHPDoc 只是一个置于每个函数开头的块注释,其使用的特定可分析语法可用于自动生成文档。Zend Studio 还使用该信息收集生成 WSDL 文档所需的类型化信息。

继续前面的示例,下面是先前使用的同一 math 类,但这次使用的是 PHPDoc 注释: 

/**
* A simple math utility class
* @author John Coggeshall john@zend.com
 */
class math {
    /**
* Add two integers together
     *
* @param integer $a The first integer of the addition
* @param integer $b The second integer of the addition
* @return integer The sum of the provided integers
     */
public function add($a, $b) {
return $a + $b;
    }

    /**
* Subtract two integers from each other
     *
* @param integer $a The first integer of the subtraction
* @param integer $b The second integer of the subtraction
* @return integer The difference of the provided integers
     */
public function sub($a, $b) {
return $a - $b;
    }
}

正确使用这些 PHPDoc 注释之后,通过执行 Studio 的 Tools 菜单下的 WSDL 生成器,您可以让 Zend Studio 为该类自动生成合适的 WSDL 文档:

正确使用 PHPDoc 注释之后,就可以减少为 SOAP 服务器生成 WSDL 文档所需的其他繁琐而无意义的任务,而只需遵循一个非常简单的分步向导即可。完成后,Studio 将打开其中的 WSDL 文档,以供您查看并保存到所选的位置。

生成文档之后,必须将该文档放在服务器能够访问的位置(在实例化类时需要),以及可能使用该服务的潜在 SOAP 客户端能够访问的位置。通常,这很容易实现,只需将 WSDL 文档与托管 SOAP 服务的终端 PHP 脚本放在同一位置即可。

精彩图集

赞助商链接