1. 程式人生 > >綜合封裝資料通訊方法json+xml

綜合封裝資料通訊方法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);