多语言展示
当前在线:1687今日阅读:113今日分享:31

php多个接口怎么封装起来

接口的主要功能是从服务器端获取数据,然后渲染到客户端
方法/步骤
1

其主要的实现流程一般会经历这样的几个阶段服务器端----》 数据库|缓存 ----》 调用接口 ----》客户端在接口数据传输的过程中,一般采用Json或者Xml的数据格式进行传输,json在生成数据方面(json_encode)和传输速度上比较强,xml在数据的可读性能上比较强。接下来封装一个完整的接口返回数据的公用方法,如下所示:

2

$code,            'message' => $message,            'data' => $data,        );        if($type == 'json') {            self::json($code, $message, $data);            exit;        } elseif($type == 'array') {            var_dump($result);        } elseif($type == 'xml') {            self::xmlEncode($code, $message, $data);            exit;        } else {            // TODO        }    }    /**    * 按json方式输出通信数据    * @param integer $code 状态码    * @param string $message 提示信息    * @param array $data 数据    * return string    */    public static function json($code, $message = '', $data = array()) {                if(!is_numeric($code)) {            return '';        }        $result = array(            'code' => $code,            'message' => $message,            'data' => $data        );        echo json_encode($result);        exit;    }    /**    * 按xml方式输出通信数据    * @param integer $code 状态码    * @param string $message 提示信息    * @param array $data 数据    * return string    */    public static function xmlEncode($code, $message, $data = array()) {        if(!is_numeric($code)) {            return '';        }        $result = array(            'code' => $code,            'message' => $message,            'data' => $data,        );        header('Content-Type:text/xml');        $xml = '\n';        $xml .= '\n';        $xml .= self::xmlToEncode($result);        $xml .= '';        echo $xml;    }    public static function xmlToEncode($data) {        $xml = $attr = '';        foreach($data as $key => $value) {            if(is_numeric($key)) {                $attr = ' id='{$key}'';                $key = 'item';            }            $xml .= '<{$key}{$attr}>';            $xml .= is_array($value) ? self::xmlToEncode($value) : $value;            $xml .= '\n';        }        return $xml;    }}

3

缓存在接口中会有大量的使用,关于缓存又分为静态缓存和redis/memcache缓存,先说静态缓存的实现,一般是将数据写入日志,查看日志时用的比较多,即写入静态文件中。

5

在接口中常用的缓存为redis缓存,他拥有memcache的所有功能,而且还支持多种数据类型。缓存的数据存放在内存中,读取速度相当于读取文件来说更快一些。redis 缓存的设置只需要选择数据库(0-15),直接设置key,value值和过期时间即可,封装的方法如下:

6

handler =  new Redis();          //从配置读取        $this->handler->connect($data['hostname'],$data['port']);        $this->handler->auth($data['auth']);            $this->handler->select($dbindex);       }      public static function getInstance($dbindex = 0){        if(!isset(self::$_instance[$dbindex]) or  FALSE == (self::$_instance[$dbindex] instanceof self)){          self::$_instance[$dbindex] = new self($dbindex);        }        return self::$_instance[$dbindex];      }    /**key value  get**/    public  function GET($key)    {      return  $this->handler->get($key);    }    /**key value  set  过期时间为 $exp**/    public  function SET($key ,$value ,$exp)    {        $this->handler->setex($key ,$exp ,$value );    }    /*移除数据$key*/    public  function REMOVE($key)    {        $this->handler->delete($key);    }      /*设置数据的过期时间$key*/    public  function EXPIRE($key ,$exp)    {        $this->handler->expire($key ,$exp);    }    /**Hash 相关**/    public  function HGET($domain , $key)    {        return $this->handler->hGet($domain , $key);    }    public  function HSET ($domain ,$key ,$value )    {          $this->handler->hSet($domain , $key);    }    public  function HREMOVE($domain ,$key)    {        $this->handler->hDel($domain , $key);    }     /*插入列表*/    public  function  PushList($channel,$data)    {          $this->handler->lPush($channel,$data);    }    /*从列表中获取*/    public function  POPList($channel)    {        return  $this->handler->lPop($channel);    }  } ?>

推荐信息