利用PHP创建由Oracle驱动的SOAP服务
2009-01-06 13:10:21 来源:WEB开发网◆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 服务,您应该按如下方法构建服务器:
$server = new SoapServer(“bookman.wsdl”, array(‘soap_version’ => SOAP_1_2));
该过程的下一步是创建服务方法。在 PHP 中,这可以使用两个主要方法完成。第一个(也是最灵活的)方法是使用 addFunction() 方法手动指定要托管在服务中的每个函数,并将函数名传递给该方法以公开到客户端:
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 文档定义的那样。
更多精彩
赞助商链接