参考视频http://www.imooc.com/learn/163

  1. <?php
  2.  
  3. /**
  4. * app返回数据类
  5. * 1.接受多维,缺少键名的数组,
  6. * 2.可由输入的format参数决定返回数据格式
  7. * 例子:Response::show(200, 'success', $data);
  8. */
  9. class Response
  10. {
  11. const JSON = 'json';
  12.  
  13. /**
  14. * 按json格式输出通信数据
  15. */
  16. public static function json($result)
  17. {
  18. echo json_encode($result);
  19. }
  20.  
  21. /**
  22. * encode XML的数据部分
  23. */
  24. private static function _xml_encode($data)
  25. {
  26. $xml = "";
  27. foreach ($data as $key => $value) {
  28.  
  29. //如果键名是数字,则改为<item id="0"></item>格式
  30. $attr = '';
  31. if (is_numeric($key)) {
  32. $attr = " id='{$key}'";
  33. $key = "item";
  34. }
  35.  
  36. //如果键值是数组,则递归调用自己
  37. $xml .= "<{$key}{$attr}>";
  38. $xml .= is_array($value) ? "\n" . self::_xml_encode($value) : $value;
  39. $xml .= "</{$key}>\n";
  40. }
  41.  
  42. return $xml;
  43. }
  44.  
  45. /**
  46. * 按xml格式输出通信数据
  47. */
  48. public static function xml($result)
  49. {
  50. header("Content-Type:text/xml");
  51. $xml = "<?xml version='1.0' encoding='UTF-8'?>\n";
  52. $xml .= "<root>\n";
  53.  
  54. $xml .= self::_xml_encode($result);
  55.  
  56. $xml .= "</root>\n";
  57.  
  58. echo $xml;
  59. }
  60.  
  61. /**
  62. * 按输入的格式输出通信数据
  63. */
  64. public static function show($code, $message = "", $data = array(), $type = self::JSON)
  65. {
  66. if ( ! is_numeric($code)) {
  67. die('json输入参数需要数字');
  68. }
  69.  
  70. //如果存在请求的格式化类型
  71. $type = isset($_GET['format']) ? $_GET['format'] : $type;
  72.  
  73. $result = array(
  74. 'code' => $code,
  75. 'message' => $message,
  76. 'data' => $data,
  77. );
  78.  
  79. if ($type == 'json') {
  80. self::json($result);
  81. }
  82. elseif($type == 'xml') {
  83. self::xml($result);
  84. }
  85. elseif($type == 'array') {
  86. echo '<pre>';
  87. print_r($result);
  88. echo '</pre>';
  89. }
  90. exit;
  91. }
  92.  
  93. }
  94.  
  95. //可多维,缺少键名的数组,可由输入的format参数决定返回数据格式
  96. $data = array(
  97. 'id' => 1,
  98. 'name' => 'haha',
  99. 'addr' => array(1,2,3=>array(22,'hh')),
  100. );
  101.  
  102. Response::show(200, 'success', $data);
  103. ?>

结果如下:

PHP开发APP接口---返回数据的封装类的更多相关文章

  1. 《PHP开发APP接口》笔记

    PHP开发APP接口 [TOC] 课程地址 imooc PHP开发APP接口 学习要点 APP接口简介 封装通信接口方法 核心技术 APP接口实例 服务器端 -> 数据库|缓存 -> 调用 ...

  2. PHP开发APP接口实现--基本篇

    最近一段时间一直在做APP接口,总结一下APP接口开发以来的心得,与大家分享: 1. 客户端/服务器接口请求流程: 安卓/IOS客户端   –> PHP接口 –> 服务器端  –> ...

  3. 酷友观点/经验:支付接口返回数据接收地址,session数据丢失(或者说失效)的问题浅析(原创文章)

    酷友观点/经验:支付接口返回数据接收地址,session数据丢失(或者说失效)的问题浅析(原创文章)   最近手头在开发一个游戏官网,在支付模块采用神州付技术支持,神州付数据表单中要求提供服务器返回地 ...

  4. PHP开发APP接口(二)

    这里将会调用前面博客的数据库连接单例.文件缓存类和开发APP接口(一) <?php // http://app.com/list.php?page-=1&pagesize=12 requ ...

  5. python3乱码问题:接口返回数据中文乱码问题解决

    昨天测试接口出现有一个接口中文乱码问题,现象: 1 浏览器请求返回显示正常 2 用代码请求接口返回数据中文显示乱码 3 使用的python3,python3默认unicode编码,中文都是可以正常显示 ...

  6. python接口自动化26-参数关联和JSESSIONID(上个接口返回数据作为下个接口请求参数)

    前言 参数关联是接口测试和性能测试最为重要的一个步骤,很多接口的请求参数是动态的,并且需要从上一个接口的返回值里面取出来,一般只能用一次就失效了. 最常见的案例就是网站的登录案例,很多网站的登录并不仅 ...

  7. mock模拟接口返回数据

    mock,是python中模拟接口返回数据 1.安装 pip install mock import unittest from mock import Mock def add(a,b): pass ...

  8. PHP开发APP接口之返回数据

    首先说明一下客户端APP通信的格式 1.xml:扩展标记语言(1.用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,xml格式统一,跨平台和语言,非常适合数据传输和通信,早已 ...

  9. PHP开发APP接口学习笔记

    习要点概述1.APP接口简介 2.封装通信接口方法 3.核心技术 4.APP接口实例 服务器和客户端进行接口数据通信:服务器 -->数据库|缓存 -->调用接口 -->客户端 服务器 ...

随机推荐

  1. Docker&Kubernetes沙龙干货集锦:容器集群管理利器kubernetes详谈-CSDN.NET

    Docker&Kubernetes沙龙干货集锦:容器集群管理利器kubernetes详谈-CSDN.NET undefined Package - crawler undefined 科学网- ...

  2. CentOS搭建GIT服务器【一】-仓库搭建以及基于gitosis的SSH方式访问

    1.安装GIT核心 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel gcc g ...

  3. Hibernate的集合映射(Set、List、Array、Map、Bag)

    POJOs如下: Customer类------>customer表   Order类对应---------->orders表  customer(1)<-------------- ...

  4. Bison executable not found in PATH by mysql install

    [root@luozhonghua mysql-5.5.21]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DMYSQL_DATADIR=/d ...

  5. GA遗传算法解析

    LinJM  @HQU 谈及遗传算法,我首先想到的就是孟德尔的豌豆实验.当然,遗传算法实质上并不能用豌豆实验说明,豌豆实验探讨了分离定律和自由组合定律,而遗传算法所借鉴的并不是这两个定律.遗传算法,简 ...

  6. OpenGL ES2学习笔记(9)-- 转换矩阵

    线性代数是计算机图形学的一块基石,本篇文章总结如何在Shader中使用矩阵来移动.缩放和旋转顶点. 代码和效果 把下面的代码复制到OpenGL Console里: import java.nio.By ...

  7. 偷偷mark下一个

    java书单 thinking in java java战 Effective Java 深入了解JVM虚拟机 java性能优化权威指南 JSR133 Google Guava官方教程 版权声明:本文 ...

  8. oracle1

    引言: 数据保存问题? 可使用文件保存和数据库保存. 使用文件保存数据存在几个缺点: 1.文本的安全性问题: 2.文件不利于查询和对数据的管理: 3.文件不利于存放海量数据: 4.文件在程序中控制不方 ...

  9. iOS监听电话事件

    项目上有个需求,要求打完电话后加积分. 首先导入这两个头文件: #import <CoreTelephony/CTCallCenter.h> #import <CoreTelepho ...

  10. VIM中文乱码(_vimrc配置文件备份)

    _vimrc在用户目录下: set fileencodings=ucs-bom,utf-,cp936,gb18030,big5,euc-jp,euc-kr,latin1 set encoding=ut ...