soap.php文件:
<?php
class control_soap{
public function client(){
try{
$soap = new SoapClient(null,array(
"location" => "http://localhost/soap/server.html",
"uri" => "moudle_soapEmail", //资源描述符服务器和客户端必须对应
"style" => SOAP_RPC,
"use" => SOAP_ENCODED
));
//debug($soap);
//debug($soap->Get_NoSynEmail());
$ids=array(0=>'0');
if($soap->Update_SynEmail($ids)){
//echo $soap->Update_SynEmail($ids);
echo "yesyang";
}
}catch(Exction $e){
echo print_r($e->getMessage(),true);
}
exit();
}
public function server(){
$server=new SoapServer(null,array('uri' => "moudle_soapEmail"));
//debug(DOCUMENT_ROOT.DS.'module\soapEmail.php');
include DOCUMENT_ROOT.DS.'module\soapEmail.php';
//load('soapEmail');
$server->setClass("moudle_soapEmail");
$server->handle();
exit();
}
}
soapEmail.php文件:
<?php
/**
* @author yang
* @date 2011-11-5
* @todo 提供给邮箱服务器端的同步邮箱功能
*/
class moudle_soapEmail extends base_sql{
/**
* @author yang
* @date 2011-11-5
* @todo 返回未同步的邮箱给邮箱服务器端
* @return array 未同步的邮箱的二维数组
*/
public function Get_NoSynEmail(){
$sql="select * from `#__email` where SynFlag=0 limit 50";
return $this->db->fetchAll($sql);
}
/**
* @author yang
* @date 2011-11-5
* @todo 更新本地的email表中未同步的邮箱为同步过的
* @return array 更新成功与否
*/
public function Update_SynEmail($ids){
if (!is_null($ids)) {
foreach ($ids as $key=>$val){
$sql="update `#__email` set SynFlag=1 where ID=".$val;
$this->db->query($sql);
}
return true;
}else{
return false;
}
}
}
浏览器输入client方法的路径即可:localhost/soap/client.html
另外更加正式的代码写法是:
再写个server.php类:
<?php
class control_server{
public function server(){
$server=new SoapServer(null,array('uri' => "moudle_soapEmail"));
//debug(DOCUMENT_ROOT.DS.'module\soapEmail.php');
include DOCUMENT_ROOT.DS.'module\soapEmail.php';
//load('soapEmail');
$server->setClass("moudle_soapEmail");
$server->handle();
exit();
}
}
而soap.php类改为:
<?php
class control_soap{
public function client(){
try{
$soap = new SoapClient(null,array(
"location" => "http://localhost/server/server.html",
"uri" => "moudle_soapEmail", //资源描述符服务器和客户端必须对应
"style" => SOAP_RPC,
"use" => SOAP_ENCODED
));
//debug($soap);
//debug($soap->Get_NoSynEmail());
$ids=array(0=>'0');
if($soap->Update_SynEmail($ids)){
//echo $soap->Update_SynEmail($ids);
echo "yesyang";
}
}catch(Exction $e){
echo print_r($e->getMessage(),true);
}
exit();
}
}
soapEmail.php文件及调用方式不变。这样改后的目的是实现服务器方法与客户端方法的分离。