PHP封装XML和JSON数据接口类

class Response
{
    const JSON = "json";

    //封装json,xml两种输出到一个入口方法中
    public static function show($code,$message,$data=[],$type=self::JSON)
    {
        if (!is_numeric($code)) {
            return "";
        }
        $type = isset($_GET['format']) ? $_GET['format']:self::JSON;

        $result = [
            'code'    => $code,
            'message' => $message,
            'data'    => $data,
        ];
        if ($type == 'json') {
            self::json($code,$message,$data);
            exit();

        }elseif ($type == 'array') {
            var_dump($result);die();

        }elseif ($type == 'xml') {
            self::xmlEncode($code,$message,$data);
            exit();
            
        }else{
            //TODO
        }
    }

    //输出json格式数据
    public static function json($code,$message,$data=[])
    {
        if (!is_numeric($code)) {
            return "";
        }
        $result = [
            'code'    => $code,
            'message' => $message,
            'data'    => $data,
        ];
        echo json_encode($result);
    }

    //输出xml格式数据
    public static function xmlEncode($code,$message,$data)
    {
        if (!is_numeric($code)) {
            return "";
        }

        $result = [
            'code'   => $code,
            'message'=> $message,
            'data'   => $data,
        ];

        header("Content-Type:text/xml");
        $xml  = "<? version='1.0' encoding='UTF-8' ?>\n";
        $xml .= "<root>\n";
        $xml .= self::xmlToEncode($result);
        $xml .= "</root>";
        echo $xml;
    }


    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}>\n";
        }
        return $xml;
    }
}


//测试数据
$data =[
    'id'   => 20,
    'name' =>'zhangsan',
    'group'=>[
            'id'   => 20,
            'name' =>'zhangsan',
            'group'=>[1,2,3,4,5,6]
        ],
    ];
Response::show(200,'测试哦',$data,'xml');

Response::show(200,'测试哦',$data,'array');

Response::show(200,'测试哦',$data);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容