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

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

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
正如您从上述示例中看到的那样,公开为 SOAP 服务的函数看上去与常规 PHP 函数完全相同。但是,根据定义,适用于在 SOAP 服务上下文中使用的函数的几个

正如您从上述示例中看到的那样,公开为 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");

您稍后将看到,该方法是最简洁、最模块化的一个方法。
 
要完成 SOAP 服务器,您必须指导它处理从连接的 SOAP 客户端传入的任何请求。这是通过 handle() 方法完成的,该方法不需要参数。

总之,用PHP 创建SOAP 服务器就像以下示例一样简单:

<?php

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

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

$server = new SoapServer(‘math.wsdl’);
$server->addClass(‘math’);
$server->handle();

?>

如果出现错误

用 PHP 创建 SOAP 服务时必须解决的一个问题是:在出现错误的情况下,如何将错误报告给客户端。根据 SOAP 协议中的规范,在请求期间出现的错误应该通过将特殊 SOAP Fault 响应返回给请求客户端的方式来处理。在 PHP 中,这是通过发出 SoapFault 类的实例、向该类提供错误代码和描述错误本质的可选错误消息来完成的,如下所示:

public Function div($a, $b) {
if($b == 0) {
        throw new SoapFault(-1, 
“Cannot divide by zero!”);
    }
    
return $a / $b;
}

注意,除了应用程序本身表达的意思外,这两个 SoapFault 参数没有任何其他含义。因此,尽管我在这里使用了负数作为错误代码,但仍然可以十分轻松地选择其他所需的整数值。

精彩图集

赞助商链接