[APP接口] -- PHP开发APP接口(一)
来源:互联网 发布:剑三藏剑捏脸数据成男 编辑:程序博客网 时间:2024/06/05 05:52
原文链接: http://www.cnblogs.com/xp796/p/5347374.html
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; } }
0 0
- [APP接口] -- PHP开发APP接口(一)
- PHP开发APP接口(一):APP接口简介
- PHP开发APP接口(一)
- PHP开发APP接口全过程(一)
- php开发APP接口(一)
- php开发app接口
- PHP开发APP接口
- PHP开发APP接口
- PHP开发APP接口
- PHP开发APP接口
- PHP开发APP接口
- php开发App接口
- PHP 开发APP 接口
- php开发App接口
- PHP开发app接口
- php 开发APP接口
- PHP开发APP接口
- PHP开发APP接口
- 小白从Linux到放弃第八篇
- mysql数据库优化
- DVWA - SQL Injection (low, medium, high)
- 控件版本问题 ----填坑
- 精通java之executorservice详解
- [APP接口] -- PHP开发APP接口(一)
- android:descendantFocusability
- 小米手机系统升级到MIUI8,Android studio真机调试须知
- ExtJS 中 setValue不显示的问题
- Java注释模板
- accp7.0-S2 优化MySchool数据库设计
- 博客迁移
- 如何通过可移动设备盘符获取设备路径或GUID
- Qt Qwdget 汽车仪表知识点拆解4 另类进度条实现