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);
网友评论