连载2:利用PHP创建由Oracle 驱动的SOAP服务

a0vezipxtdk4bi

a0vezipxtdk4bi

2016-01-29 12:56

连载2:利用PHP创建由Oracle 驱动的SOAP服务,连载2:利用PHP创建由Oracle 驱动的SOAP服务

   《连载1:利用PHP创建由Oracle 驱动的SOAP服务》

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

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/php/)

1)自己手动编写 WSDL 文档;
2)通过手动输入每个方法和类型化信息,使用基于 Web 的 WSDL 生成器来生成文件;
3)使用 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 脚本放在同一位置即可。

创建 BookManager 类
现在,您已经熟悉了用 PHP 实施 SOAP 服务的所有内容,下面我们来讨论数据库。出于本手册的需要,我创建了一个名为 BookManager 的类。该类的作用将与前面示例中的 math 类相同,除了要与数据库进行交互,并提供一个 SOAP 服务,以允许您执行一般维护并查询本教程开头描述的书籍表。具体而言,BookManager 类将实施以下要公开为 SOAP 调用的方法:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/php/)

addBook($isbn, $author, $title, $price); // Adds a Book to the database
delBook($isbn); // Deletes a book by ISBN number
findBookISBNByAuthor($author); // Returns an array of ISBN numbers of books written by a        
// specific author
findBookISBNByTitle($title); // Returns an array of ISBN numbers of books whose title
// matches the substring provided
getBookByISBN($isbn); // Returns the details of the book identified by ISBN
listAllBooks(); // Returns an array of all ISBN numbers in the database

尽管该类本身有其他几个方法,但只有上述六个方法是声明的公共方法(当然,除了构造函数以外),因而也是仅有的公开为 SOAP 服务的方法。虽然详细说明每

展开更多 50%)
分享

猜你喜欢

连载2:利用PHP创建由Oracle 驱动的SOAP服务

PHP
连载2:利用PHP创建由Oracle 驱动的SOAP服务

连载1:利用PHP创建由Oracle 驱动的SOAP服务

PHP
连载1:利用PHP创建由Oracle 驱动的SOAP服务

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

连载3:利用PHP创建由Oracle驱动的SOAP服务

PHP
连载3:利用PHP创建由Oracle驱动的SOAP服务

连载4:利用PHP创建由Oracle驱动的SOAP服务

PHP
连载4:利用PHP创建由Oracle驱动的SOAP服务

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

利用oradim重建Oracle服务

编程语言 网络编程
利用oradim重建Oracle服务

在PHP中利用XML技术构造远程服务(2)

Web开发
在PHP中利用XML技术构造远程服务(2)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

遇到一个session丢失的问题打开含有mediaplayer播放器的页面 会导致session丢失 -

遇到一个session丢失的问题打开含有mediaplayer播放器的页面 会导致session丢失 -

在C#中应用哈希表(Hashtable)

在C#中应用哈希表(Hashtable)
下拉加载更多内容 ↓