PHP开发APP接口(三)
封装通信接口数据方法:
1.json方式封装数据方法
2.xml方式封装数据方法
3.综合数据封装方法。
json方式:json_encode();
该函数只接受utf-8编码的数据;
iconv('原始编码','目标编码','变量');通过此函数转换编码;
xml方式
php生成xml数据:
1>组装字符串
2>使用系统类
DomDocument
<?php
$dom = new DOMDocument('1.0','utf-8');
$element = $dom->createElement('test','This is the root element!');
$dom->appendChild($element);
echo $dom->saveXml();
?>
XMLWriter
SimpleXML
xml的节点不能为数字,所以索引数组会报错;
解决方案:
<0>1</0>
===><item id='0'>1</item>
通信数据标准格式:
code 状态码(200,400等)
message 提示信息(邮箱格式不正确,数据返回不成功等)
data 返回数据
<?php
class Response{
/**
*按json方式输出通信数据
*@param integert $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);
}
public static function xml(){
header('Content-Type:text/xml');
$xml = "<?xml version='1.0' encoding='UTF-8'?> \n";
$xml.="<root> \n";
$xml.="<code>200</code>\n";
$xml.="<message>数据返回成功</message>\n";
$xml.="<data>\n";
$xml.="<id>1</id>\n";
$xml.="<name>xiaoming</name>\n";
$xml.="</data>\n";
$xml.="</root>";
}
/**
*按xml方式输出通信数据
*@param integert $code 状态码
*@param string $message 提示信息
*@param array $data 数据
*return string
*/
public static function xmlEncode($code,$message='',$data){
if(!is_numeric($code)){
return "";
}
$result=array(
'code' => $code,
'message' => $message,
'data' => $data
)
header('Content-Type:text/xml');
$xml = "<?xml version='1.0' encoding='UTF-8'?> \n";
$xml.="<root> \n";
$xml.=self::xmlToEncode($result);
$xml.="</root>";
}
public static function xmlToEncode($data){
$xml=$attr="";
foreach($data as $key=>$value){
if(is_numeric($key)){
$attr="id='{$key}'";
$key="item";
}
$xml.="<{$key}{$attr}>\n";
$xml.=is_array($value)?self::xmlToEncode($value):$value;
$xml.="</{$key}> \n";
}
return $xml;
}
/**
*按综合方式输出通信数据
*@param integert $code 状态码
*@param string $message 提示信息
*@param array $data 数据
*@param string $type 数据类型
*return string
*/
public static function show($code,$message='',$data=array(),$type='json'){
if(!is_numeric($code)){
return "";
}
$type=isset($_GET['format'])?$_GET['format']:$type;
$result=array(
'code' => $code,
'message' => $message,
'data' => $data
)
if($type == 'json'){
self::json($code,$message,$data);
exit;
}elseif($type == 'array'){
return $result;
}elseif($type == 'xml'){
self::xmlEncode($code,$message,$data);
}else{
//TODO
}
}
}
?>
=================================================================
<?php
/*直接调用*/
require_once('./reponse.php');
$arr = array{
'id' =>1,
'name' => 'xiaoming'
)
Reponse::json(200,'数据返回成功',$arr);
Reponse::xmlEncode(200,'数据返回成功',$arr);
?>