开启Soap扩展
linux下参考
sudo apt-get install php7.2-soap
windows下找到php.ini 删除;extension=php_soap.dll
前面的注释
重启nginx/apache
服务
创建服务端文件server.php
服务端的方法内部的输出不能体现, 需要返回值给客户端
class server
{
public function test()
{
echo 'test'; // 不会被输出
return 'this is test';
}
public function max($a, $b)
{
return max($a, $b);
}
}
// 此处没有使用wsdl, 如果使用wsdl, 那么第一个参数就是wsdl文件的地址
$params = [
'uri' => 'server.php',
'cache_wsdl' => WSDL_CACHE_NONE, // 不使用缓存
'location' => 'http://data.test-xstnet.com/webservice/server.php'
];
// 创建 SoapServer 对象
$server = new SoapServer(null, $params);
// 导出 server 类中的全部函数
$server->setClass('server');
// 处理SOAP请求
$server->handle();
创建客户端文件client.php
$params = [
'uri' => 'server.php',
'cache_wsdl' => WSDL_CACHE_NONE, // 不使用缓存
'location' => 'http://data.test-xstnet.com/webservice/server.php'
];
$client = new SoapClient(null, $params);
$res = $client->test();
$res2 = $client->max(100, 99);
// 调用服务端的方法
var_dump($res);
var_dump($res2);
访问服务端server.php 开启webservice服务
浏览器访问server.php对应的位置
访问客户端调用服务端方法
其实只需要服务端便可开启webservice
服务, 使用客户端是方便测试
修改php.ini关闭缓存
在开发期间,可以通过使用soap.wsdl_cache_ttl php.ini设置禁用WSDL缓存,否则在soap.wsdl_cache_ttl到期之前对WSDL文件所做的更改将不起作用 。
修改php.inisoap.wsdl_cache_enabled=1
(改为0)soap.wsdl_cache_ttl=86400
(改为0)
重启nginx/apache
服务
官方文档: https://www.php.net/manual/zh/soapclient.soapclient.php