您的位置:首页 > 移动开发

php-app接口实现(json和xml)

2015-08-12 15:39 441 查看

1.回顾

   上篇学习了封装mysql的实例化对象类!

2.这篇将封装一个app接口类,用来生成 json数据和xml数据

3.了解和掌握

    3.1 xml和json的区别

           xml:扩展标记语言:可以标记数据 ,定义数据类型;数据格式清晰明了, 可读性高;

           json:一种轻量级的数据交换格式;生成数据简单;传输速度快;

    3.2 app接口与数据

                  获取数据:从数据库中或者缓存中获取数据(可以是缓存里的数据)

                  提交数据:通过get方式或者post方式提交数据,服务端处理后,返回数据

      

    3.3 通信数据标准格式

              状态码:code 

              提示信息:message 

             返回数据:  data

    3.4 定时任务和缓存 (这里不封装)

          缓存 :静态缓存 , Memcache 和 Redis 缓存技术

          定时任务 :corntab 

4.封装

     4.1 json封装

                json方式封装接口数据方法

                函数json_encode();

               只接收utf-8的编码数据

     4.2 xml封装

                组装字符串 (简单)

                使用系统的方法

  

     4.3 实现类

 
<?php

//header("Content-type:text/html;charset=utf-8");

class Response{

const JSON='json';
/**
* 01.综合通信入口
* @param int $code
* @param string $msg
* @param array $data
* @param string $type
*/
public static function show($code,$msg='',$data=array()){

if(!is_numeric($code)){
return '';
}
//如果url上传参了,去参数的类型,否则取得默认值!
$type=isset($_GET['type'])?$_GET['type']:self::JSON;

$result=array(
'code'=>$code,
'msg'=>$msg,
'data'=>$data
);
if($type=='json'){
self::jsonEncode($code,$msg,$data);
exit();
}elseif ($type=='xml'){
self::xmlEncode($code,$msg,$data);
exit();
}elseif ($type='array'){
var_dump($result);
exit();
}

}

/**
* 02.按json方式输出 通信数据
* @param int $code 状态码
* @param string $msg 提示信息
* @param array $data 数据
* retrun string
*/
public static function jsonEncode($code,$msg='',$data=array()) {
header("Content-Type:text/json");
#判断状态码
if(!is_numeric($code)){
return '';
}
$result=array(
'code'=>$code,
'msg'=>$msg,
'data'=>$data
);

echo json_encode($result);
exit();
}

/**
* 03.封装xml 输出通信数据
* @param unknown $code
* @param unknown $msg
* @param unknown $data
*/
public static function xmlEncode($code,$msg='',$data=array()){

if(!is_numeric($code)){
return '';
}

$result=array(
'code'=>$code,
'msg'=>$msg,
'data'=>$data
);

header("Content-Type:text/xml");
$xml="<?xml version='1.0' encoding='UTF-8'?>";
$xml.="<root>";
$xml.=self::xmlToEncode($result);
$xml.="</root>";
echo $xml;

exit();
}

/**
*04. 拼装 xml数据
* @param array $data
* @return string
* 使用递归,判断是不是数组,是数组继续调用循环
* xml的 节点不能为 数字,用item代替
*/
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;
}

}

?>


      4.4 调用

          通过url实现 ,显示数据类型 type可以为 xml ,json ,array !
http://localhost:8081/appInterface/test.php?type=json


          test.php 实现如下:

require_once 'appUtil.php';
$arr=array(
'id'=>1,
'name'=>'yuan',
'age'=>23,
'location'=>'hpu'
);

$arr1=array(1,4,5,2,6,3);

Response::jsonEncode(200,'success',$arr);


5.综合 上篇连接mysql数据库 实现:数据封装

//调用
$con=Db::getInstance()->connect();

//查询语句
$sql='select * from user_info';
//执行,返回结果集
$result=mysql_query($sql,$con);
//添加的新数组
$arr3=array();
while ($row=mysql_fetch_row($result)){
array_push($arr3,$row);
}
Response::show('200','success',$arr3);

6. appUtil.php下载 

http://download.csdn.net/detail/lablenet/8995987
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml json php appUtil.php