使用PHP开发app后端的接口时,我们需要返回数据,最常用的就是XML和JSON格式的数据,那么样返回呢?
1.JSON
json数据是最容制造的,只要使用php自带的json_encode()函数就可以简单的制作出json数据了
2.XML
xml数据就要复杂一点了,让我们看一下xml数据的格式
那么怎样构造呢?
3.制作生产接口数据的类
<?php
//定义生成接口数据类
class Api
{
/*
* 生成json数据格式
* @param integer $code 状态码
* @param string $message 提示信息
* $param array $data 数据
* return string
*/
public static function json($code, $message = '', $data = array())
{
//如果状态码不是数字就返回空
if(!is_numeric($code)) {
return '';
}
//构造返回数据
$result = array(
'code' = > $code,
'message' => $message,
'data' => $data
);
return json_encode($result);
}
/*
* 生成xml数据格式
* @param integer $code 状态码
* @param string $message 提示信息
* @param array $data 数据
* return string
*/
public static function xml($code, $message = '', $data = array())
{
if(!is_numeric($code)) {
return '';
}
$result = array(
'code' => $code,
'message' => $message,
'data' => $data
);
//构造xml数据
//使返回的数据以xml格式显示
header("Content-Type:text/xml");
//开始拼xml数据
$xml = "<?xml version='1.0' encoding='UTF-8'?>";
//根节点
$xml .= "<root>";
//创建一个额外函数来构造
$xml .= self::xmlToEncode($result);
$xml .= "</root>";
return $xml;
}
//构造xml数据函数
public static function xmlToEncode($data)
{
$xml = "";
$attr = "";
foreach($data as $key => $value)
{
//如果传递的数组是没有键值的话,<0>,<1>这种类型的节点是不合法的,所有就要判断了,如果是数字就这样<item id='0'>显示
if(is_numeric($key)) {
$attr = "id = '{$key}'";
$key = "item";
}
//如果是数字就加上$attr
$xml .= "<{$key}{$attr}>";
//如果value是数组就进行递归
$xml .= is_array($value) ? self::xmlToEncode($value) : $value;
$xml .= "</{$key}>";
}
return $xml;
}
}
//下面就来测试一下吧
$data = array(
'id' => 1,
'name' => 'zjp',
'content' => array(
'sex' => '男',
'age' => '24',
'num' => array(1,3,5,7,9)
)
);
$xml = Api::xml(200, "返回数据成功", $data);
$json = Api::json(200, "返回数据成功", $data);
?>
xml格式数据:上面那张介绍xml格式
json格式数据: