2015.8.18
PHP生成JSON數據
json_encode($value) 方法
(response.php和testapi.php)
通信標准格式:
code 狀態碼 message 提示信息 data返回數據

json如何封裝通信數據方法
Response類
<?php
classResponse{
/**
*按json方式輸出通信數據
*@param integer $code 狀態碼
*@param string $message 提示信息
*@param array $data 數據
*return string
*/
publicstaticfunction json($code,$message='',$data=array()){
if(!is_numeric($code)){
return'';
}
$result=array(
'code'=>$code,
'message'=>$message,
'data'=>$data
);
echo json_encode($result);
exit;
}
}
實例使用
<?php
require_once('./apitest.php');
$arr=array(
'id'=>1,
'name'=>'huwei',
);
Response::json(200,'數據返回成功',$arr);
PHP生成XML數據
1.組裝字符串
2.使用系統類
DomDocument
XMLWriter
SimpleXML
封裝XML通信接口
封裝方法
/**
*按XML方式輸出通信數據
*@param integer $code 狀態碼
*@param string $message 提示信息
*@param array $data 數據
*return string
*/
publicstaticfunction xml($code,$message='',$data=array()){
if(!is_numeric($code)){
return'';
}
$result=array(
'code'=>$code,
'message'=>$message,
'data'=>$data
);
header("Content-Type:text/xml");//將頭信息轉換為XML格式
$xml="<?xml version='1.0' encoding='UTF-8'?>\n";
$xml.="<root>\n";
$xml.=self::xmlToEncode($result);
$xml.="</root>";
return $xml;
}
publicstaticfunction 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}>";
}
return $xml;
}
實現:
<?php
require_once('./apitest.php');
$arr=array(
'id'=>1,
'name'=>'huwei',
'type'=>array(1,2,3)
);
//echo Response::json(200,'數據返回成功',$arr);
echo Response::xml(200,'數據返回成功',$arr);
綜合通信方法封裝
封裝方法
const JSON="json";
/**
*按綜合方式輸出通信數據
*@param integer $code 狀態碼
*@param string $message 提示信息
*@param array $data 數據
*@param string $type 類型
*return string
*/
publicstaticfunction show($code,$message='',$data=array(),$type==self::JSON){
if(!is_numeric($code)){
return'';
}
$result=array(
'code'=>$code,
'message'=>$message,
'data'=>$data,
);
if($type=='json'){
returnself::json($code,$message,$data);
}elseif($type=='array'){
var_dump($result);
}elseif($type=='xml'){
returnself::xml($code,$message,$data);
}else{
//TODO
}
}
調用方式:
<?php
require_once('./apitest.php');
$arr=array(
'id'=>1,
'name'=>'huwei',
'type'=>array(1,2,3)
);
//echo Response::json(200,'數據返回成功',$arr);
//echo Response::xml(200,'數據返回成功',$arr);
echo Response::show(200,'數據返回成功',$arr,'array');
緩存技術:
1.靜態緩存
保存在磁盤上的靜態文件,用PHP生成的數據放入靜態緩存文件中
PHP操作緩存(file.php)
生成緩存、獲取緩存、刪除緩存
封裝類
<?php
classFile{
private $_dir;// 文件路徑
const EXT='.txt';//文件后綴
publicfunction __construct(){
$this->_dir=dirname(__FILE__).'\files\/';//獲取該項目同級目錄
}
publicfunction cacheData($key,$value='',$path=''){
$filename=$this->_dir.$path.$key.self::EXT;
if($value!==''){//將value值寫入緩存
if(is_null($value)){
return@unlink($filename);
}
$dir=dirname($filename);
if(!is_dir($dir)){
mkdir($dir,0777);
}
return file_put_contents($filename,json_encode($value));//若成功返回字節數,不然為false
}
if(!is_file($filename)){
returnFalse;
}else{
return json_decode(file_get_contents($filename),true);
}
}
}
調用類
<?php
//require_once('./apitest.php');
require_once('./file.php');
$arr=array(
'id'=>1,
'name'=>'huwei',
'type'=>array(1,2,3)
);
//echo Response::json(200,'數據返回成功',$arr);
//echo Response::xml(200,'數據返回成功',$arr);
//echo Response::show(200,'數據返回成功',$arr,'array');
$file=newFile();
//echo $file->cacheData('index_cache',$arr); //寫入操作
//var_dump($file->cacheData('index_cache')); //讀取操作
echo $file->cacheData('index_cache',null);//刪除操作
2.Memcache,redis
設置緩存操作
獲取緩存操作
刪除緩存操作
1.Memcache和Redis都是用來管理數據的
2.他們數據都是存放在內存上的
3.Redis可以定期將數據備份到磁盤(持久化)
4.Memchache只是簡單的key/value緩存
5.Redis不僅僅支持簡單的k/v類型的數據,同時還提供list、set、hash等數據結構的存儲
附件列表