一、app接口简介:与PHP面向对象的接口不同,是通信接口地址
1. 条件:
1) 接口地址
2) 接口文件
3) 接口数据
2. 如何通信
1) 类似BS模式
3. 客户端app通信格式区别:xml和json
1) 可读性方面:xml
2) 生成数据方面:json
a) xml:
i. 拼接
ii. DomDocument类
iii. XMLWriter类
iv. SimpleXML类
b) json:json_encode
3) 传输速度:json
4. app接口能做哪些事
1) 获取数据:从数据库|缓存中获取数据,通过接口数据返回给客户端
2) 提交数据:通过接口提交数据给服务器,服务器入库处理,或者其他处理
二、封装通信接口方法
1. 服务器端->数据库|缓存->调用接口->客户端
2. 通信数据标准格式
1) code
2) message
3) data
3. json方式封装接口数据:
1) jeson_encode($data);$data为utf-8编码的
2) 示例
//json生成数据封装
public static functionjson($code,$message='',$data=array()){
if(!is_numeric($code)){
return '';
}
$result=array(
'code'=>$code,
'message'=>$message,
'data'=>$data,
)
return json_encode($result);
}
4. xml方式封装接口数据:
1) 示例
// xml
public static functionxmlEncode($code,$message='',$data=array()){
if(!is_numeric($code)){
return'';
}
$result=array(
'code'=>$code,
'message'=>$message,
'data'=>$data,
)
header('Content_Type:text/xml')
$xml="<?xmlversion='1.0' encoding='UTF-8'>\n";
$xml.="<root>\n";
$xml.=self::xmlToEncode($result);
$xml.="</root>";
}
public static function xmlToEncode($data){
$xml=''
foreach($data as $k => $v) {
if(is_numeric($k)){
$attr='id="'.$k.'"';
$k='item';
}
$xml.=is_array($v)?self::xmlToEncode($v):"<".$k.">".$v."</".$k.">"
}
/*<0></0>*/
return$xml;
}
5. 综合方式封装通信数据方法:
1) 示例
//综合
public static public functionshow($code,$message='',$data=array())
{
$type=$_GET['format']?$_GET['format']:'json'
if(!is_numeric($code)){
return'';
}
$result=array(
'code'=>$code,
'message'=>$message,
'data'=>$data,
)
if($type=='json'){
self::json($code,$message,$data)
exit;
}elseif($type=='xml'){
self::xmlToEncode($code,$message,$data);
exit;
}elseif($type=='array'){
//用来调试
var_dump($result);
}else{
//后续补充
}
}
三、核心技术
1. 缓存技术
1) 静态缓存:PHP写入文件
a) 生成缓存
b) 获取缓存
c) 删除缓存
2) memcache缓存
a) php操作memcache
i. connect(),set(),get(),del(),
3) redis缓存
a) set,get,setex(带过期时间),del
b) php操作redis:phpredis
i. connect(),set(),get(),del()
2. 定时任务
1) 定时任务命令
a) crontab
i. 内容说明:
1. 分小时 日 月 星期 命令(执行文件)
2. *代表取值范围内的数字,/代表每分钟|小时....
ii. crontab -e
1. 编辑某用户cron服务
iii. crontab -l
1. 列出某用户cron服务
iv. crontab -r
1. 删除某用户cron服务
四、app接口实例
1. 单例模式链接数据库
1) 单例:一个类只有一个实例
a) 三大规则
i. 构造函数需要标记为非public.单例类不能再其他类中实例化,只能被自身实例化
ii. 拥有一个保存类的实例的静态变量成员$_instance
iii. 拥有一个访问这个实例的公共的静态方法
2. 首页接口开发及客户端app演示
1) 方案:
a) 读取数据库方式:时效性比较高
b) 读取缓存方式:减少数据库压力
c) 定时读取缓存方式:
3. app版本升级以及app演示
1) check
4. app错误日志接口
联系客服