• PHP 开发 APP 接口 学习笔记与总结


    1.PHP 生成 XML 数据

    ① 拼接字符串

    ② 使用系统类(DomDocument,XMLWriter,SimpleXML)

    例1 使用 PHP 系统类中的 DomDocument 类:

    <?php
    $dom = new DomDocument('1.0','utf-8');
    $element = $dom->createElement('test','This is a root element');
    $dom->appendChild($element);
    echo $dom->saveXML();

    页面输出

    This is a root element

    查看源代码显示:

    <?xml version="1.0" encoding="utf-8"?>
    <test>This is a root element</test>

    例2 拼接字符串

    //修改 http 头信息
    header("Content-Type:text/xml");
    //xml头信息
    $xml = "<?xml version='1.0' encoding='utf-8'?>
    ";
    //根节点开始标签
    $xml .= "<root>
    ";
    //code
    $xml .= "<code>200</code>
    ";    
    //message
    $xml .= "<message>数据返回成功</message>
    ";    
    //data
    $xml .= "<data>
    ";    
    $xml .= "<id>1</id>
    ";
    $xml .= "<name>John</name>
    ";
    $xml .= "</data>
    ";
    //根节点结束标签
    $xml .= "</root>";
    
    echo $xml;
    exit();

    页面输出:

    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    <root>
    <code>200</code>
    <message>数据返回成功</message>
    <data>
    <id>1</id>
    <name>John</name>
    </data>
    </root>

    http 响应头信息:

    2.XML 方式封装通信接口

    <?php
    
    class Response{
        /**
        * 按 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

    $data 第一种情况:

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

    页面输出:

    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    <root>
    <code>200</code>
    <message>数据返回成功</message>
    <data>
    <id>1</id>
    <name>Mary</name>
    </data>
    </root>

    $data 第二种情况

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

    页面输出:

    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    <root>
    <code>200</code>
    <message>数据返回成功</message>
    <data>
    <id>1</id>
    <name>Mary</name>
    <type>
    <item id="0">1</item>
    <item id="1">3</item>
    <item id="2">6</item>
    </type>
    </data>
    </root>

    $data 第三中情况:

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

    页面输出:

    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    <root>
    <code>200</code>
    <message>数据返回成功</message>
    <data>
    <id>1</id>
    <name>Mary</name>
    <type>
    <a>1</a>
    <b>3</b>
    <c>6</c>
    </type>
    </data>
    </root>
  • 相关阅读:
    vue-cli生成的重要代码详解
    vuex初探
    vue-router笔记
    新技术的学习
    图片优化方法(有时间看看)
    关于老教授之家项目的思考 && 中国互联网+大赛培训
    If you are tired...
    微信公众平台开发初探
    winscp介绍与使用
    获取当前服务器信息
  • 原文地址:https://www.cnblogs.com/dee0912/p/4321255.html
Copyright © 2020-2023  润新知