首页 > php教程 > php手册 > 正文

利用PHP创建由Oracle驱动的SOAP服务

php中文网
发布: 2016-06-06 19:56:54
原创
1549人浏览过

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 能够通过 Web 服务为其他基于 Internet 的 Web 应用程序提供数据和功能正迅速成为重大开发中必不可或缺的组成部分。尽管 Oracle 提供了许多托管 Web 服务的方法,但这么做始终不是最有效的方法,特

欢迎进入oracle社区论坛,与200万技术人员互动交流 >>进入

  能够通过 Web 服务为其他基于 Internet 的 Web 应用程序提供数据和功能正迅速成为重大开发中必不可或缺的组成部分。尽管 Oracle 提供了许多托管 Web 服务的方法,但这么做始终不是最有效的方法,特别是在已经使用 PHP 来开发 Web 应用程序的情况下。在本手册中,我将引导您使用 PHP 逐步开发 SOAP 客户端和服务器,并使用 Oracle 作为数据的后端。

  要真正了解这个问题的答案,您需要了解 PHP 脚本执行的生命周期以及 Web 服务器对该生命周期的影响,本手册将从此开始逐步展开论述。

  必需组件
  出于本手册的需要,您将使用一个非常简单的数据库后端,该数据库后端将在一个表中存储有关已发表书籍的某些基本信息,该表由以下 CREATE 语句表示:

CREATE TABLE books(isbn VARCHAR(32) PRIMARY KEY,
author VARCHAR(50),
title VARCHAR(50),
price FLOAT);

  该表将充当 SOAP 服务器的数据源,而数据源又会根据需要将数据提供给一个或多个 SOAP 客户端。尽管在实际应用程序中,您的数据库可能比较复杂,但这里描述的方法仍然适用。

  建立数据库(最好在其中放置一些虚拟数据)之后,您现在就可以深入了解用 PHP 开发 SOAP 服务器所涉及的内容了。

  SOAP 服务在 PHP 中的工作方式

  用 PHP 开发 SOAP 服务的选择有多种,所有方法都涉及到 SoapServer PHP 类。该类是所有基于 PHP 的 SOAP 服务的核心部分,其语法如下:

$server = new SoapServer($wsdl [, $options]);
  其中,$wsdl 是描述托管服务的 Web 服务描述语言 (WSDL) 文档的位置;$options 是一组键/值对,其中包含了在创建服务时需要考虑的所有设置选项。稍后,您将了解有关 WSDL 文档的更多内容;现在,我们来看一下在创建新的 SOAP 服务时可用的选项:

  ?soap_version:与客户端通信时使用的 SOAP 协议版本。可能的选项是用于 SOAP 1.1 版的常量 SOAP_1_1 或用于 SOAP 1.2 版的 SOAP_1_2.

  ?encoding:用于该 SOAP 服务的字符编码(即字符串 ISO-8859-1)。

  ?actor:该 SOAP 服务的角色 URI.

  ?classmap:将 WSDL 数据类型映射到 PHP 中的类名的一组键/值对本身。如果使用该选项,PHP 将根据 WSDL 中定义的类型将这些类呈现给连接客户端。

  因此,要使用名为 bookman.wsdl 的 WSDL 文档创建一个使用 SOAP v1.2 协议的 SOAP 服务,您应该按如下方法构建服务器:

function add($a, $b) {
return $a + $b;
}

$server->addFunction(‘add’);

  您还可以通过提供一组函数名来添加多个函数:
function add($a, $b) {
return $a + $b;
}

function sub($a, $b) {
return $a - $b;
}

$server->addFunction(array(‘add’, ‘sub’));

  最后,您可以通过传递特殊常量 SOAP_FUNCTIONS_ALL 而非函数名来导出所有定义的函数,如下所示:
function add($a, $b) {
return $a + $b;
}

function sub($a, $b) {
return $a - $b;
}

$server->addFunction(SOAP_FUNCTIONS_ALL);

  正如您从上述示例中看到的那样,公开为 SOAP 服务的函数看上去与常规 PHP 函数完全相同。但是,根据定义,适用于在 SOAP 服务上下文中使用的函数的几个规则并不适用于常规 PHP 函数:

  ?函数必须以相同的顺序接受相同的输入参数,如提供给服务器的 WSDL 文档定义的那样。

  ?函数不能输出任何内容(即打印/回显)。

  ?函数必须返回一个或多个值(多个值以一组关联的键/值对的形式返回)。

  由于从体系结构或审美的角度看,在过程函数中表示所有公开的服务调用并不总是明智的选择,因此 PHP 还提供了一种使用对象表示 SOAP 服务的方法。通过使用 addClass() 方法,您可以指定一个类来表示整个 SOAP 服务的函数,其中的所有公共方法将自动公开为服务调用:

class math {
public function add($a, $b) {
return $a + $b;
    }

public function sub($a, $b) {
return $a - $b;
    }
}

$server->addClass("math");

  您稍后将看到,该方法是最简洁、最模块化的一个方法。

[1] [2] [3] [4] [5] 

利用PHP创建由Oracle驱动的SOAP服务

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号