第一步:服务端文件
<?php
$wsdlfile='webservice.wsdl';
ini_set('soap.wsdl_cache_enabled','0'); //关闭WSDL缓存
//001.创建webservice接口类
class UserAction{
//创建用户方法
public function create($username,$password)
{
return 'Create success!';
}
//删除用户方法
public function del($userid)
{
return 'Del success!';
}
}
//002.通过第三方类库创建生成wsdl文件
require_once 'SoapDiscovery.class.php';
$SoapDis=new SoapDiscovery('UserAction','soap'); //soap可以自己定义,无所谓的
$WsdlRev=$SoapDis->getWSDL();
//if(!file_exists($wsdlfile)){
file_put_contents($wsdlfile, $WsdlRev);
//}
//003.通过wsdl创建服务
$webserver = new SoapServer($wsdlfile);
$webserver->setClass('UserAction');
$webserver->handle();第二步:客户端文件
<?php
$ws=new SoapClient('http://learn.cn/webservice.wsdl');
$ret=$ws->create('gao','123456');
var_dump($ret);
?>下载demo:
上篇文章已经讲解arrayacces的原理,现在来讲解下arrayaccess的实际应用。一个大型的互联网项目中必然会存在各种配置信息,例如多种数据库信息:mysql,tidb,mongodb,redis,某个业务模块单独的配置信息如比例,额度等等,那么该如何治理配置信息?PHP项目中大部分的框架都...
面试中PHP面试官会问调用一个不存在的方法,如何知道是哪个文件哪行调用的?假设方法是getWorkLoad()回答1:开启PHP错误输出,PHP会输出Fatal error: Call to undefined function getWorkLoad() in D:\wwwroot\thinkpa...
php7新增的特性(1).强制限制只能返回一种类型<?php class task { } //must return an integer function add(): int { &nb...
有时候我们需要爬一个接口,但是这个接口需要很多参数,包括header和cookie要去编写,使用php curl模拟实在太慢。我们可以通过浏览器的network来复制请求为curl命令。例如我需要模拟请求接口地址:https://www.xkmz.cc/Ajax/Debug/delly,我们只需要在...
众所周知MyISAM引擎不支持事务,但是我只是知道不支持事务,并未测试具体的表现是什么,测试代码如下:try { //开启事务 Db::startTrans(); &...
最近在项目中处理一个关于商品数据重复需要删除多余的商品记录,但是删除一条商品必然要把关联的其他表商品的id和其他商品信息更换为正确的,删除一个商品记录,同时要去修改100多张表的关联商品数据,在项目中引用了tp orm 1.2版本,由于项目是php5.6版本,没法使用最新orm,在代码中每处理1个商...