1:接口我们有json和xml格式,但是,在我们做接口的过程中,为了方便开发人员,我们需要设置混合方式,更方便开发人员调用哪种接口
下面是我简单的写了个小demo
<?php
class Response
{
const JSON='json';
/*
* 按综合通信方式输出通信数据
* @param interger $code 状态码
* @param string $message 提示信息
* @param string array $-data 数据
* @param string array $type 数据类型
* return
*/
public static function show($code, $message='',$data=array(),$type=self::JSON){
if(!is_numeric($code)){
return '';
}
$type=$_GET['format']?$_GET['format']:self::JSON;
$result=array(
'code'=>$code,
'mesage'=>$message,
'data'=>$data
);
if($type=='json'){
self::json($code,$message,$data);
}elseif( $type=='array'){
var_dump($result);
}elseif($type=='xml'){
self::xmlEncode($code,$message,$data);
}else{
//待定
}
}
/*
* 按json通信方式输出通信数据
* @param interger $code 状态码
* @param string $message 提示信息
* @param string array $-data 数据
* return
*/
public static function json($code, $message='',$data=array()){
if(!is_numeric($code)){
return '';
}
$result=array(
'code'=>$code,
'mesage'=>$message,
'data'=>$data
);
echo json_encode($result);
exit;
}
/*
* 按xml通信方式输出通信数据
* @param interger $code 状态码
* @param string $message 提示信息
* @param string array $-data 数据
* return
*/
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>\n";
$xml.=self::xmlToEncode($result);
$xml.="</root>";
echo $xml;exit;
}
public static function xmlToEncode($data){
$xml=$attr="";
foreach($data as $k=>$v){
if(is_numeric($k)){
$attr="id='$k'";
$k="item";
}
$xml.="<$k $attr >";
$xml.=is_array($v)?self::xmlToEncode($v):$v;
$xml.="</$k>\n";
}
return $xml;
}
}
//是否成功
$data=array(
'id'=>1,
'name'=>'sinagwa',
'type'=>array(1,2,3=>array(1,25,32=>array('asdf',45)),342,234),
);
Response::json(200,'success',$data);
2:静态缓存:就是保存在磁盘上的静态文件,用php生成数据放在静态文件中;
那么,php是如何操作缓存的:1:生成缓存 2:获取缓存 3:删除缓存
我给大家提供个demo,直接拿过去用就行
<?php
class File{
private $_dir;
const EXT='.txt';
public function __construct()
{
$this->_dir=dirname(__FILE__).'/files/';
}
/*
* 生成缓存 获取缓存 删除缓存
* @param string $key 文件名
* @param string $value 数据
* @param string url $path 路径
* return
*/
public function cacheDate($key,$value='',$path){
$filename=$this->_dir.$path.$key.self::EXT;
if($value!==''){
//删除缓存
if(is_null($value)){
return @unlink($filename);
}
//将value值写入缓存
$dir=dirname($filename);
if(is_dir($dir)){
mkdir($dir,0777);
}
//写入缓存中
return file_put_contents($filename,json_encode($value));
}
if(!is_file($filename)){
return flase;
}else{
//获取缓存
return json_decode(file_get_contents($filename),true);
}
}
}
3:缓存我们也可以有memcache和redis缓存技术,
(1):Memcache和redis都是用来管理数据的
(2):他们疏忽都是存放在内存里的
(3):redis可以定期经数据备份到磁盘(持久化)
(4):Memcache只是简单的key/value缓存
(5):redis不仅仅支持简单的k/v类型的数据,同时,还提供list,set,hash等数据结构的存储
关于这个memcache和redis这个缓存技术,我就不在这里详细的介绍了,大家可以自己搜下这个该怎么用