zoukankan      html  css  js  c++  java
  • PHP开发APP接口(三)

    封装通信接口数据方法:
    1.json方式封装数据方法
    2.xml方式封装数据方法
    3.综合数据封装方法。

    json方式:json_encode();
    该函数只接受utf-8编码的数据;
    iconv('原始编码','目标编码','变量');通过此函数转换编码;

    xml方式
    php生成xml数据:
    1>组装字符串
    2>使用系统类
        DomDocument
    <?php
    $dom = new DOMDocument('1.0','utf-8');
    $element = $dom->createElement('test','This is the root element!');
    $dom->appendChild($element);
    echo $dom->saveXml();
    ?>
        XMLWriter
        SimpleXML

    xml的节点不能为数字,所以索引数组会报错;
    解决方案:
        <0>1</0>
        ===><item id='0'>1</item>


    通信数据标准格式:
    code      状态码(200,400等)
    message    提示信息(邮箱格式不正确,数据返回不成功等)
    data    返回数据

    <?php
    class Response{
    /**
    *按json方式输出通信数据
    *@param integert $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
            }
            
            return json_encode($result);                

        }

        public static function xml(){
            header('Content-Type:text/xml');
            $xml = "<?xml version='1.0' encoding='UTF-8'?> ";
            $xml.="<root> ";
            $xml.="<code>200</code> ";
            $xml.="<message>数据返回成功</message> ";
            $xml.="<data> ";
            $xml.="<id>1</id> ";
            $xml.="<name>xiaoming</name> ";
            $xml.="</data> ";
            $xml.="</root>";

        }
    /**
    *按xml方式输出通信数据
    *@param integert $code 状态码
    *@param string $message 提示信息
    *@param array $data 数据
    *return string
    */

        public static function xmlEncode($code,$message='',$data){
            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'?> ";
            $xml.="<root> ";
            $xml.=self::xmlToEncode($result);    
            $xml.="</root>";    

        }

        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.="</{$key}> ";
            }
            return $xml;
        }
    /**
    *按综合方式输出通信数据
    *@param integert $code 状态码
    *@param string $message 提示信息
    *@param array $data 数据
    *@param string $type 数据类型
    *return string
    */
        public static function show($code,$message='',$data=array(),$type='json'){
            if(!is_numeric($code)){
                return "";
            }
            $type=isset($_GET['format'])?$_GET['format']:$type;
            $result=array(
                'code' => $code,
                'message' => $message,
                'data' => $data            
            )

            if($type == 'json'){
                self::json($code,$message,$data);
                exit;
            }elseif($type == 'array'){
                return $result;
            }elseif($type == 'xml'){
                self::xmlEncode($code,$message,$data);
            }else{
                //TODO
            }
        }
    }
    ?>

     =================================================================

    <?php

    /*直接调用*/
    require_once('./reponse.php');
    $arr = array{
        'id' =>1,
        'name' => 'xiaoming'
    )

    Reponse::json(200,'数据返回成功',$arr);
    Reponse::xmlEncode(200,'数据返回成功',$arr);
    ?>

  • 相关阅读:
    MySQL优化
    MySQL 的 SQL 操作
    笔记本电脑同时使用两个网络
    top
    logrotate
    正则表达式学习总结
    HttpClient parameter 和body 传输同时进行
    Node.js背景
    前后端分离的理解
    shiro 的subject 以及Context 对象的具体的含义。
  • 原文地址:https://www.cnblogs.com/eis13/p/5555855.html
Copyright © 2011-2022 走看看