php 在工作中框架下做的一个soap代理示例

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文件及调用方式不变。这样改后的目的是实现服务器方法与客户端方法的分离。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值