美文网首页
php返回数据格式的接口封装

php返回数据格式的接口封装

作者: 潜水100号 | 来源:发表于2017-01-23 12:40 被阅读0次

接口文件response.php

<?php
    
    class Response{
        //默认是json格式
        const JSON='json';
        public static function show($code,$message='',$data=array(),$type){
    
            if(!is_numeric($code)){
                return '';
            }
            //为前端开发人员提供接口
            $type=isset($_GET['format'])?$_GET['format']:self::JSON;
            $result=array(
                'code'=>$code,
                'message'=>$message,
                'data'=>$data
                );
            if($type=='json'){
                self::jsonEncode($code,$message,$data);
                exit;
            }elseif($type=='array'){
                //调试
                var_dump($result);
            }elseif($type=="xml"){
                self::xmlEncode($code,$message,$data);
                exit;
            }else{
                //html
            }

        }


        public static function jsonEncode($code,$message='',$data=array()){
            if(!is_numeric($code)){
                return '';
            }
            //把要返回给前端的数据组合 
            $result=array(
                'code'=>$code,
                'message'=>$message,
                'data'=>$data
                );
            //array => json
            echo json_encode($result);
            exit;
            
        }
        
        
        public static function xmlEncode($code,$message,$data){
            if(!is_numeric($code)){
                return '';
            }
            //告诉浏览器该格式为xml
            header("Content-Type:text/xml");
            $result=array(
                    'code'=>$code,
                    'message'=>$message,
                    'data'=>$data        
                );
                $xml='';
                //xml声明是必要的
                $xml.="<?xml version='1.0' encoding='UTF-8'?>";
                //根节点是必要的
                $xml.="<root>";
                $xml.=self::xmlToEncoding($result);
                $xml.="</root>";
                echo $xml;

        }

      public static function xmlToEncoding($result){
            foreach($result as $key=>$val){
                 //处理根节点为数字 xml是不允许的 所以使用id号来区别
                  if(is_numeric($key)){
                      $attr="id='{$key}'";
                      $key="item";
                 }
                $xml.="<{$key} {$attr}>";
                $attr='';
                $xml.=is_array($val)?self::xmlToEncoding($val):$val;
                $xml.="</{$key}>";     
            }
            return $xml;
    
      }

    }
?>

test.php

<?php
   require_once('./Response.php');
   $code='200';
   $message="成功";
   $data=array(
      'name'=>'小红',
      'age'=>23,
      'type'=>array(1,2,3)
  );
  
<?php
   require_once('./Response.php');
   $code=200;
   $message="成功";
   $data=array(
      'name'=>'小红',
      'age'=>23,
      'type'=>array(1,2,3)
  );
  
  // Process::jsonEncode($code,$message,$data);
  // Process::xmlEncode($code,$message,$data);
   Response::show($code,$message,$data,'xml');


相关文章

网友评论

      本文标题:php返回数据格式的接口封装

      本文链接:https://www.haomeiwen.com/subject/cidabttx.html