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相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- XML 与 JSON 优劣对比
- Php Installing An Expansion
- As3.0 xml + Loader应用代码
- 网马生成器 MS Internet Explorer XML Parsing Buffer Overflow Exploit (vista) 0day
- ext读取两种结构的xml的代码
- newtonsoft.json解析天气数据出错解决方法
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP