phpAppInterface - juedaiyuer/researchNote GitHub Wiki
#PHP开发APP接口#
服务端--->数据库|缓存--->调用接口--->客户端
#访问URL
...api.php?format=xml
##APP通信接口定义##
- 接口地址
- 接口文件(api.php处理一些业务逻辑)
- 接口数据
##通信格式##
- XML数据
- JSON数据
##封装通信数据方法##
###PHP生成方法###
#只能接受UTF-8编码的数据,如果传递其它格式的数据该函数会返回NULL
json_encode($value)
<?php
/**
* Created by PhpStorm.
* User: root
* Date: 16-8-8
* Time: 下午5:16
*/
$arr = array(
'id' => 1,
'name' => 'juedaiyuer'
);
echo json_encode($arr);
// 浏览器显示的JSON数据
{"id":1,"name":"juedaiyuer"}
// 字符串的编码转换
iconv('原始编码','目标编码',$data)
###通信数据标准格式###
code 状态码(200,400等)
message 提示信息(邮箱格式不正确;数据返回成功等)
data 返回数据
###按json方式输出通信数据###
<?php
class Response{
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;
}
}
// 其它模块的调用
<?php
/**
* Created by PhpStorm.
* User: root
* Date: 16-8-9
* Time: 下午7:42
*/
require_once('./resource.php');
// 可以根据需要从数据库获取信息
$arr = array(
'id'=>1,
'name'=>'juedaiyuer'
);
response::json(200,'数据返回成功',$arr);
// 浏览器测试结果
{"code":200,"message":"\u6570\u636e\u8fd4\u56de\u6210\u529f","data":{"id":1,"name":"juedaiyuer"}}
###PHP生成XML数据###
####组装字符串####
public static function xml(){
// show xml format in the broswer
// header("Content-Type:text/xml");
$xml = "<?xml version='1.0' encoding='utf-8'?>\n";
$xml .= "<root>\n";
$xml .= "<code>200</code>\n";
$xml .= "<message>data success</message>\n";
$xml .= "<data>\n";
$xml .= "<id>1</id>\n";
$xml .= "<name>juedaiyuer</name>\n";
$xml .= "</data>\n";
$xml .= "</root>\n";
echo $xml;
}
####使用系统类####
- DomDocument
- XMLWriter
- SimpleXML
###XML封装通信数据方法###
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'?>";
$xml .= "<root>";
$xml .= self::xmlToEncode($result);
$xml .= "</root>";
}
public static function xmlToEncode($data){
$xml = $attr = "";
foreach ($data as $key => $value) {
// 如果传递的参数里面有未写key的数组格式,比如array(4,6,7)
// 解决方式:
// <item id = '0'>4</item>
// <item id = '1'>6</item>
// ...
if(is_numeric($key)){
$attr = "id = '{$key}''";
$key = "item";
}
$xml .= "<{$key}{$attr}>";
//如果传递参数里有数组格式,采用递归方式转化成xml格式
$xml .= is_array($value)?self::xmlToEncode($value):$value;
$xml .= "</{$key}>";
}
return $xml;
}
###综合
##源代码##