PHP开发APP接口(一)
php以json或者xml 形式返回给app。明白这点就很好说了,就是把数据包装成json或者xml,返回给APP
定义抽象APP基类:
- <?php
- /**
- * 定义API抽象类
- */
- abstract class Api {
- const JSON = 'Json';
- const XML = 'Xml';
- const ARR = 'Array';
- /**
- * 定义工厂方法
- * param string $type 返回数据类型
- */
- public static function factory($type = self::JSON) {
- $type = isset($_GET['format']) ? $_GET['format'] : $type;
- $resultClass = ucwords($type);
- require_once('./Response/' . $type . '.php');
- return new $resultClass();
- }
- abstract function response($code, $message, $data);
- }
以xml形式返回给APP:
- <?php
- class Xml extends Api {
- public function response($code, $message = '', $data = array()) {
- 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>";
- $xml .= self::xmlToEncode($result);
- $xml .= "</root>";
- echo $xml;
- }
- public static function xmlToEncode($result) {
- $xml = $attr = '';
- foreach($result as $key => $value) {
- //判断键值对,如果是数字键值不允许
- if(is_numeric($key)) {
- $attr = " id='" . $key . "'";
- $key = "item";
- }
- $xml .= "<{$key}{$attr}>";
- //以递归形式返回,主要是因为数组在xml中显示是array,必须显示出来具体键值对
- $xml .= is_array($value) ? self::xmlToEncode($value) : $value;
- $xml .= "</{$key}>\n";
- }
- return $xml;
- }
- }
以json格式返回数据:
- <?php
- /**
- * 按xml方式输出通信数据
- */
- class Json extends Api {
- public function response($code, $message = '', $data = array()) {
- if(!(is_numeric($code))) {
- return '';
- }
- $result = array(
- 'code' => $code,
- 'message' => $message,
- 'data' => $data
- );
- echo json_encode($result);
- exit;
- }
- }
也可以采用这种方式组装返回数据:
- <?php
- class Response {
- const JSON = "json";
- /**
- * 按综合方式输出通信数据
- * @param integer $code 状态码
- * @param string $message 提示信息
- * @param array $data 数据
- * @param string $type 数据类型
- * return string
- */
- public static function show($code, $message = '', $data = array(), $type = self::JSON) {
- if(!is_numeric($code)) {
- return '';
- }
- $type = isset($_GET['format']) ? $_GET['format'] : self::JSON;
- $result = array(
- 'code' => $code,
- 'message' => $message,
- 'data' => $data,
- );
- if($type == 'json') {
- self::json($code, $message, $data);
- exit;
- } elseif($type == 'array') { //适合调试代码
- var_dump($result);
- } elseif($type == 'xml') {
- self::xmlEncode($code, $message, $data);
- exit;
- } else {
- // TODO
- }
- }
- /**
- * 按json方式输出通信数据
- * @param integer $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
- );
- echo json_encode($result);
- exit;
- }
- /**
- * 按xml方式输出通信数据
- * @param integer $code 状态码
- * @param string $message 提示信息
- * @param array $data 数据
- * return string
- */
- public static function xmlEncode($code, $message, $data = array()) {
- 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>";
- echo $xml;
- }
- 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}>\n";
- }
- return $xml;
- }
- }
PHP开发APP接口(一)的更多相关文章
- 《PHP开发APP接口》笔记
PHP开发APP接口 [TOC] 课程地址 imooc PHP开发APP接口 学习要点 APP接口简介 封装通信接口方法 核心技术 APP接口实例 服务器端 -> 数据库|缓存 -> 调用 ...
- PHP开发APP接口(二)
这里将会调用前面博客的数据库连接单例.文件缓存类和开发APP接口(一) <?php // http://app.com/list.php?page-=1&pagesize=12 requ ...
- PHP开发APP接口
第1章 APP接口简介 - 课程简介 (:) - APP接口介绍 (:) - 客户端APP通信 (:) 最近学习 - 客户端APP通信格式区别 (:) - APP接口做的哪些事儿 (:) 第2章 封装 ...
- PHP开发APP接口学习笔记
习要点概述1.APP接口简介 2.封装通信接口方法 3.核心技术 4.APP接口实例 服务器和客户端进行接口数据通信:服务器 -->数据库|缓存 -->调用接口 -->客户端 服务器 ...
- PHP开发APP接口实现--基本篇
最近一段时间一直在做APP接口,总结一下APP接口开发以来的心得,与大家分享: 1. 客户端/服务器接口请求流程: 安卓/IOS客户端 –> PHP接口 –> 服务器端 –> ...
- 关于开发APP接口版本不兼容的问题
关于 APP接口版本兼容的问题. iOS和android 要不断开发新版本,很多服务端开发都是在以前接口的逻辑上进行修改. 新的APP和接口开发后,接口如何兼容老的APP? 有的公司 每次发布完APP ...
- PHP开发APP接口之返回数据
首先说明一下客户端APP通信的格式 1.xml:扩展标记语言(1.用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,xml格式统一,跨平台和语言,非常适合数据传输和通信,早已 ...
- php开发APP接口(总结一)
一.什么是app接口:服务端与客户端的数据交互. 大部分APP接口是通过http协议通信的. http通信的三要素: URL: 通信的地址 Method:通信的方式(get | post | pu ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [5] 版本设计分析及数据表设计
APP 版本升级以及 APP 演示 ① 版本升级分析以及数据表设计 ② 版本升级接口开发以及 APP 演示 /** * version_upgrade 版本升级信息表 */ CREATE TABLE ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [7] APP 错误日志接口
APP 上线以后可能遇到的问题: ① APP 强退 ② 数据加载失败 ③ APP 潜在问题 错误日志需要记录的内容 数据表 error_log 字段: id app_id:app 类别 id did: ...
随机推荐
- PHP实现斐波那契数列非递归方法
斐波那契数列,又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n ...
- C#XML创建与节点对象引用
我们在创建xml过程中会遇到不同的级别有相同节点的情况.如下面的xml: <?xml version="1.0" encoding="GBK"> & ...
- CentOS 6.4 使用第三方源
1.EPEL源 CentOS 6.x 32-bit (x86/i386):rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/ep ...
- 解析sql中的表名
最近的项目需求中需要解析sql得表名,由于只需要表名我觉得应该用相对粗暴一点的方式来解析 初步思路: 1.转义字符:去除两个引号连在一起的 2.字符串: 去除所有被引号包裹的 3.括号:识别括号处理 ...
- MYSQL ERROR 1130: Host is not allowed to connect to this MySQL server
今天安装MYSQL遇到MYSQL ERROR 1130: Host is not allowed to connect to this MySQL server, 试了很多办法都不行 skip-gra ...
- CSS标签居中
CSS标签居中是相对于父标签说的,即在父标签的中居中.通常是在子标签中使用margin:0 auto,来使子标签居中.此外子标签需要有固定的宽度才行,比如 子标签为div时,div的宽度默认占父标签的 ...
- canvas仿黑客帝国的字符下落
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ...
- C#中值参数的使用实例
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 函数的参 ...
- BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式
Description 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠.我们称之为一个"模式". ...
- cisco telnet会话SESSION管理及相关Dynagen配置文件
#Lab 2-5 autostart = False [localhost] [[2621]] ram = 64 image = C:\Program Files (x86)\Dynamips\ima ...