美文网首页
PHP封装XML和JSON数据接口类

PHP封装XML和JSON数据接口类

作者: 铁匠简记 | 来源:发表于2018-04-27 16:52 被阅读64次
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);

相关文章

网友评论

      本文标题:PHP封装XML和JSON数据接口类

      本文链接:https://www.haomeiwen.com/subject/flhilftx.html