目前通信接口返回的数据大多为json格式或XML格式的数据,以下提供一个简单的思路
封装json格式数据
/**
* 返回json格式通信数据
* interger $code 状态码
* string $message 提示信息
* array $data 数据
*/
public static function jsonEncode($code, $message='', $data=array())
{
if(!is_numeric($code)){
return "";
}
$result = array(
'code' => $code,
'message' => $message,
'data' => $data,
);
return json_encode($result);
}
封装XML格式通信数据
/**
* 返回xml格式通信数据
* interger $code 状态码
* string $message 提示信息
* array $data 数据
*/
public static function xmlEncode($code, $message='', $data=array())
{
if(!is_numeric($code)){
return "";
}
$result = array(
'code' => $code,
'message' => $message,
'data' => $data,
);
header("Content-type:html/xml");
$xml = "<root>";
$xml .= self::xmlToEncode($result);
$xml .= "</root>";
return $xml;
}
/**
* 对数据部分进行xml格式封装
* array $data 数据
*/
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}>";
}
return $xml;
}
综合以上两种格式进行数据输出
/**
* 综合两种格式返回数据结果
* interger $code 状态码
* string $message 提示信息
* array $data 数据
*/
public static function dataEncode($code, $message='', $data=array(), $type="")
{
if(!is_numeric($code)){
return "";
}
if(empty($type)){
$type = isset($_GET['format']) ? $_GET['format'] : "json";
}
if(strtolower($type) == "json"){
$result = self::jsonEncode($code, $message, $data);
} elseif(strtolower($type) == "xml"){
$result = self::xmlEncode($code, $message, $data);
} else {
return "请求数据格式错误";
}
return $result;
}