php开发app接口

app接口简介:与PHP面向对象的接口不同,是通信接口地址
  条件:
    接口地址
    接口文件
    接口数据
  如何通信
    类似BS模式
  客户端app通信格式区别:xml和json
    可读性方面:xml
    生成数据方面:json
      xml:
        拼接
        DomDocument类
        XMLWriter类
        SimpleXML类
        json:json_encode
    传输速度:json
  app接口能做哪些事
    获取数据:从数据库|缓存中获取数据,通过接口数据返回给客户端
    提交数据:通过接口提交数据给服务器,服务器入库处理,或者其他处理
封装通信接口方法
  服务器端->数据库|缓存->调用接口->客户端
  通信数据标准格式
    code
    message
    data
  json方式封装接口数据:
    jeson_encode($data);$data为utf-8编码的
    示例
    //json生成数据封装
    public static function json($code,$message='',$data=array()){
      if(!is_numeric($code)){
        return '';
      }
      $result=array(
        'code'=>$code,
        'message'=>$message,
        'data'=>$data,
      )
      return json_encode($result);
    }
  xml方式封装接口数据:
    示例
    // xml
      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="<?xml version='1.0' encoding='UTF-8'>\n";
        $xml.="<root>\n";
        $xml.=self::xmlToEncode($result);
        $xml.="</root>";
      }

      public static function xmlToEncode($data){
        $xml=''
        foreach ($data as $k => $v) {
          if(is_numeric($k)){
            $attr='id="'.$k.'"';
            $k='item';
          }
          $xml.=is_array($v)?self::xmlToEncode($v):"<".$k.">".$v."</".$k.">"
        }
        /*<0></0>*/
        return $xml;
      }
  综合方式封装通信数据方法:
    示例
    //综合
    public static public function show($code,$message='',$data=array())
    {
      $type=$_GET['format']?$_GET['format']:'json'
      if(!is_numeric($code)){
        return '';
      }
      $result=array(
        'code'=>$code,
        'message'=>$message,
        'data'=>$data,
      )
      if($type=='json'){
        self::json($code,$message,$data)
        exit;
      }elseif($type=='xml'){
        self::xmlToEncode($code,$message,$data);
        exit;
      }elseif($type=='array'){
        //用来调试
        var_dump($result);
      }else{
        //后续补充
      }
    }
核心技术
  缓存技术
    静态缓存:PHP写入文件
      生成缓存
      获取缓存
      删除缓存
    memcache缓存
      php操作memcache
        connect(),set(),get(),del(),
    redis缓存
      set,get,setex(带过期时间),del
      php操作redis:phpredis
        connect(),set(),get(),del()
  定时任务
    定时任务命令
    crontab
      内容说明:
        分 小时 日 月 星期 命令(执行文件)
        *代表取值范围内的数字,/代表每分钟|小时....
      crontab -e
        编辑某用户cron服务
      crontab -l
        列出某用户cron服务
      crontab -r
        删除某用户cron服务
app接口实例
  单例模式链接数据库
    单例:一个类只有一个实例
      三大规则
        构造函数需要标记为非public.单例类不能再其他类中实例化,只能被自身实例化
        拥有一个保存类的实例的静态变量成员$_instance
        拥有一个访问这个实例的公共的静态方法
  首页接口开发及客户端app演示
    方案:
      读取数据库方式:时效性比较高
      读取缓存方式:减少数据库压力
      定时读取缓存方式:
  app版本升级以及app演示
    check
  app错误日志接口

posted @ 2018-11-14 10:24  井梅0709  阅读(223)  评论(0编辑  收藏  举报