PHP使用SoapServer和SoapClient实现Web Service接口
本文介绍了利用PHP内置的SOAP扩展构建Web Service接口的具体方法。主要涵盖环境配置要求、服务端创建(含函数与类两种模式)以及客户端调用的完整代码示例。
准备条件:开启SOAP扩展
在编写代码前,必须确保服务器环境中已加载并启用了SOAP扩展。检查 php.ini 配置文件,找到以下行并确保未被注释:
extension=php_soap.dll;
修改保存后,重启Apache服务使配置生效。测试环境参考为:apache2.2.11,php5.2.10。
第1步:使用函数注册实现服务端与调用
这种模式适合简单的逻辑处理,只需将具体的函数名注册到 SsoapServer 即可对外提供。
1.1 服务端 (serverSoap.php)
服务端创建 SersoapServer 对象时,uri 参数应设置为服务器的IP或域名,用于标识该服务的命名空间。
$soap = new SoapServer(null,array('uri'=>"http://192.168.1.179/"));
// 仅注册特定函数 minus_func
$soap->addFunction('minus_func');
// 也可使用 SOAP_FUNCTIONS_ALL 注册所有已定义函数
// $soap->addFunction(SOAP_FUNCTIONS_ALL);
$soap->handle();
function minus_func($i, $j){
$res = $i - $j;
return $res;
}
1.2 客户端 (clientSoap.php)
客户端创建 SsoapClient 时,location 必须指向服务端的完整访问路径,uri 需与服务端设置的 uri 保持一致。
try {
$client = new SoapClient(null,
array('location' =>"http://192.168.1.179/test/serverSoap.php",
'uri' => "http://127.0.0.1/")
);
// 直接调用远程函数
echo $client->minus_func(100,99);
} catch (SoapFault $fault){
echo "Error: ",$fault->faultcode,", string: ",$fault->faultstring;
}
第2步:使用Class实现服务端与调用
对于业务逻辑复杂的项目,建议将相关方法和属性封装在类中,通过 setClass 统一发布,这样结构更清晰。
2.1 服务端
创建服务实例时传入空数组作为第一参数,并使用 setClass 指定一个已经定义的类。该类中的公有方法将自动成为Web Service接口。
$classExample = array();
$soap = new SoapServer(null,array(
'uri' => "http://192.168.1.179/",
'classExample' => $classExample
));
// 设置对外暴露的类名为 chesterClass
$soap->setClass('chesterClass');
$soap->handle();
class chesterClass {
public $name = 'Chester';
function getName() {
return $this->name;
}
}
2.2 客户端
调用方式与函数版类似,直接获取类实例的方法返回值即可。
try {
$client = new SoapClient(null,
array('location' =>"http://192.168.1.179/test/serverSoap.php",
'uri' => "http://127.0.0.1/")
);
// 调用类中的方法
echo $client->getName();
} catch (SoapFault $fault){
echo "Error: ",$fault->faultcode,", string: ",$fault->faultstring;
}
总结
PHP通过原生扩展即可快速搭建轻量级Web Service服务。关键区别在于 location(物理地址)决定连接哪里,而 uri(逻辑地址)决定解析哪个契约。以上就是PHP实现webservice接口功能与实例的详细教程,更多关于PHP网络编程的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













