综合封装数据通讯方法json+xml

视屏:https://www.imooc.com/video/2808

新建 format.php文件

<?php
/**
 * @Author: Marte
 * @Date:   2018-10-08 20:02:51
 * @Last Modified by:   Marte
 * @Last Modified time: 2018-10-08 22:37:44
 */

class Format{ 
    /**
     * 以合并json以及xml格式进行输出
     * @param [int] [code] [状态码]
     * @param [string] [string] [返回信息] 
     * @param [array] [type] [返回类型]
     * @param [string] [data] [操作数据]
     */
    const JSON='json';
    public static function Show($code,$massage='',$data=array(),$type=self::JSON){
        if(!is_numeric($code)){
            return '';
        }
        $type=isset($_GET['format'])?$_GET['format']:self::JSON;

        $result=array(
            'code' =>$code,
            'massage'=>$massage,
            'data'=>$data,
            );
        if($type=='json'){
            self::ToJson($code,$massage,$data);
            exit;
        }elseif($type=='array'){
            var_dump($data);
        }elseif($type=='xml'){
            self::ToXml($code,$massage,$data);
            exit;
        }else{
            //TODO
        }
    }

    /**
     * 以json格式进行数据的返回
     * @param [int] [code] [状态码]
     * @param [string] [string] [返回信息] 
     * @param [array] [type] [返回类型]
     * 
     */
    public static function ToJson($code,$massage='',$data=array()){
        if(!is_numeric($code)){
            return '';
        }
        $result= array(
            'code' =>$code,
            'massage'=>$massage,
            'data'=>$data,
            );

        echo json_encode($result);
        exit;
    }

    /**
     * 以xml格式进行数据的返回
     * @param [int] [code] [状态码]
     * @param [string] [string] [返回信息] 
     * @param [array] [type] [返回类型]
     * 
     */
    public function ToXml($code,$massage='',$data=array()){
        if (!is_numeric($code)) {
            return '';
        }
        $result=array(
            'code'=>$code,
            'massage'=>$massage,
            'type'=>$data,    
            );
        header("Content type:text/xml");
        $xml="<?xml version='1.0' encoding='UTF-8'?>";
        $xml.="<root> \n";
        $xml.=self::ToGetXml($result);
        $xml.="</root>";

        echo  $xml;
        exit;
    }

    public static function ToGetXml($date){
        $xml='';
        $attr='';
        foreach ($date as $key => $value) {
            if(is_numeric($key)){
                $attr="id='{$key}'";
                $key='item';
            }
            $xml.="<{$key} {$attr}>";
            $xml.=is_array($value)?self::ToGetXml($value):$value;
            $xml.="</{$key}>";
        }
        return $xml;
    }
}

测试文件

test.php

<?php
/**
 * @Author: Marte
 * @Date:   2018-10-08 20:37:57
 * @Last Modified by:   Marte
 * @Last Modified time: 2018-10-08 22:33:56
 */
// 测试json返回数据

require_once("./Format.php");

$data=array(
    'id'=>100,
    'age'=>30,
    'type'=>'sex',
    'test'=>array(1,2,3,4),
    
    );

$Format=new Format();
//$Format->ToJson(200,'success',$data);
//$Format->ToXml(200,'success',$data);
$Format->Show(200,'success',$data);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值