zoukankan      html  css  js  c++  java
  • PHP 开发 APP 接口 学习笔记与总结

    要求:

    1.在一个类中封装多种数据通信方法(JSON,XML),并且只通过一个入口选择需要的数据通信格式

    2.客户端开发工程师可以自行选择数据传输格式(GET 方式)

    response.php

    <?php
    
    class Response{
        const JSON = 'json';
        //封装的综合方法,默认的数据类型为json
        public static function show($code,$message = '',$data,$type = self::JSON){
            
            if(!is_numeric($code)){
                return '';
            }
            //供测试数组使用
            $result = array(
                'code' => $code,
                'message' => $message,
                'data' => $data
            );
            //通过get参数判断通信数据类型
            $typelist = array('json','xml','array'); // array为测试使用
            if(isset($_GET['type'])){
                if(in_array(strtolower($_GET['type']),$typelist)){
                    $type = strtolower($_GET['type']);
                }else{
                    $type = self::JSON;
                }
            }else{
                $type = self::JSON;
            }
    
            if($type == 'json'){
                self::json($code,$message = '',$data);
            }else if($type == 'xml'){
                self::xml($code,$message = '',$data);
            }else if($type == 'array'){
                var_dump($result);    //仅供测试
            }
        }
    
        /**
        * 按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 xml($code,$message,$data){
    
            if(!is_numeric($code)){
                return '';
            }
    
            $result = array(
                'code' => $code,
                'message' => $message,
                'data' => $data
            );
    
            //修改 http 头信息
            header("Content-Type:text/xml");
            //xml头信息
            $xml = "<?xml version='1.0' encoding='utf-8'?>";
            //根节点开始标签
            $xml .= "<root>";
    
            $xml .= self::xmlToEncode($result);
    
            //根节点结束标签
            $xml .= "</root>";
    
            echo $xml;
            exit();
        }
    
        //解析$result至xml
        public static function xmlToEncode($data){
            $xml = $attr = "";
            foreach($data as $k=>$v){
                //如果$k是数字(data(code,message,data中的data)数据里面还含有索引数组),要进行如下判断
                if(is_numeric($k)){
                    $attr = "id='{$k}'";
                    $k = 'item ';
                }
    
                $xml .= "<{$k}{$attr}>";
                //如果$v是数组,则递归调用该方法
                if(is_array($v)){
                    $xml .= self::xmlToEncode($v);
                }else{
                    $xml .= $v;
                }
                $xml .= "</{$k}>";
            }
    
            return $xml;
        }
    }

    test.php

    <?php
    require 'response.php';
    
    $data = array(
        'id'=>1,
        'name'=>'Mary',
        'type'=>array(1,3,6) 
    );
    
    Response::show(200,'数据返回成功',$data);

    测试url:

    http://127.0.0.17/php/APP/test.php

    http://127.0.0.17/php/APP/test.php?type=json

    http://127.0.0.17/php/APP/test.php?type=xml

    http://127.0.0.17/php/APP/test.php?type=array

    http://127.0.0.17/php/APP/test.php?type=XML (返回 xml 数据)

    http://127.0.0.17/php/APP/test.php?type=arr (返回 json 数据)

  • 相关阅读:
    笔记44 Hibernate快速入门(一)
    tomcat 启用https协议
    笔记43 Spring Security简介
    笔记43 Spring Web Flow——订购披萨应用详解
    笔记42 Spring Web Flow——Demo(2)
    笔记41 Spring Web Flow——Demo
    Perfect Squares
    Factorial Trailing Zeroes
    Excel Sheet Column Title
    Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/dee0912/p/4321541.html
Copyright © 2011-2022 走看看