2015.8.18
PHP生成JSON數據
json_encode($value) 方法
(response.php和testapi.php)
通信標准格式:
code 狀態碼 message 提示信息 data返回數據
json如何封裝通信數據方法
Response類
<?phpclassResponse{/***按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;}}
實例使用
<?phprequire_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;}
實現:
<?phprequire_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}}
調用方式:
<?phprequire_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)
生成緩存、獲取緩存、刪除緩存
封裝類
<?phpclassFile{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等數據結構的存儲
附件列表
