PHP API接口


2015.8.18

 
PHP生成JSON數據
json_encode($value) 方法
           (response.php和testapi.php)
通信標准格式:
code 狀態碼   message 提示信息   data返回數據
json如何封裝通信數據方法
Response類
  1. <?php
  2. classResponse{
  3. /**
  4. *按json方式輸出通信數據
  5. *@param integer $code 狀態碼
  6. *@param string $message 提示信息
  7. *@param array $data 數據
  8. *return string
  9. */
  10. publicstaticfunction json($code,$message='',$data=array()){
  11. if(!is_numeric($code)){
  12. return'';
  13. }
  14. $result=array(
  15. 'code'=>$code,
  16. 'message'=>$message,
  17. 'data'=>$data
  18. );
  19. echo json_encode($result);
  20. exit;
  21. }
  22. }
實例使用
  1. <?php
  2. require_once('./apitest.php');
  3. $arr=array(
  4. 'id'=>1,
  5. 'name'=>'huwei',
  6. );
  7. Response::json(200,'數據返回成功',$arr);
 
PHP生成XML數據
1.組裝字符串
2.使用系統類
    DomDocument
    XMLWriter
    SimpleXML
封裝XML通信接口
 
封裝方法
  1. /**
  2. *按XML方式輸出通信數據
  3. *@param integer $code 狀態碼
  4. *@param string $message 提示信息
  5. *@param array $data 數據
  6. *return string
  7. */
  8. publicstaticfunction xml($code,$message='',$data=array()){
  9. if(!is_numeric($code)){
  10. return'';
  11. }
  12. $result=array(
  13. 'code'=>$code,
  14. 'message'=>$message,
  15. 'data'=>$data
  16. );
  17. header("Content-Type:text/xml");//將頭信息轉換為XML格式
  18. $xml="<?xml version='1.0' encoding='UTF-8'?>\n";
  19. $xml.="<root>\n";
  20. $xml.=self::xmlToEncode($result);
  21. $xml.="</root>";
  22. return $xml;
  23. }
  24. publicstaticfunction xmlToEncode($data){
  25. $xml=$attr="";
  26. foreach($data as $k=>$v){
  27. if(is_numeric($k)){
  28. $attr=" id='{$k}'";
  29. $k="item";
  30. }
  31. $xml.="<{$k}{$attr}>";
  32. $xml.=is_array($v)?self::xmlToEncode($v):$v;
  33. $xml.="</{$k}>";
  34. }
  35. return $xml;
  36. }
實現:
  1. <?php
  2. require_once('./apitest.php');
  3. $arr=array(
  4. 'id'=>1,
  5. 'name'=>'huwei',
  6. 'type'=>array(1,2,3)
  7. );
  8. //echo Response::json(200,'數據返回成功',$arr);
  9. echo Response::xml(200,'數據返回成功',$arr);
綜合通信方法封裝
 
封裝方法
  1. const JSON="json";
  2. /**
  3. *按綜合方式輸出通信數據
  4. *@param integer $code 狀態碼
  5. *@param string $message 提示信息
  6. *@param array $data 數據
  7. *@param string $type 類型
  8. *return string
  9. */
  10. publicstaticfunction show($code,$message='',$data=array(),$type==self::JSON){
  11. if(!is_numeric($code)){
  12. return'';
  13. }
  14. $result=array(
  15. 'code'=>$code,
  16. 'message'=>$message,
  17. 'data'=>$data,
  18. );
  19. if($type=='json'){
  20. returnself::json($code,$message,$data);
  21. }elseif($type=='array'){
  22. var_dump($result);
  23. }elseif($type=='xml'){
  24. returnself::xml($code,$message,$data);
  25. }else{
  26. //TODO
  27. }
  28. }
調用方式:
  1. <?php
  2. require_once('./apitest.php');
  3. $arr=array(
  4. 'id'=>1,
  5. 'name'=>'huwei',
  6. 'type'=>array(1,2,3)
  7. );
  8. //echo Response::json(200,'數據返回成功',$arr);
  9. //echo Response::xml(200,'數據返回成功',$arr);
  10. echo Response::show(200,'數據返回成功',$arr,'array');
 
 
緩存技術:
    1.靜態緩存
         保存在磁盤上的靜態文件,用PHP生成的數據放入靜態緩存文件中
         PHP操作緩存(file.php)
              生成緩存、獲取緩存、刪除緩存
封裝類
  1. <?php
  2. classFile{
  3. private $_dir;// 文件路徑
  4. const EXT='.txt';//文件后綴
  5. publicfunction __construct(){
  6. $this->_dir=dirname(__FILE__).'\files\/';//獲取該項目同級目錄
  7. }
  8. publicfunction cacheData($key,$value='',$path=''){
  9. $filename=$this->_dir.$path.$key.self::EXT;
  10. if($value!==''){//將value值寫入緩存
  11. if(is_null($value)){
  12. return@unlink($filename);
  13. }
  14. $dir=dirname($filename);
  15. if(!is_dir($dir)){
  16. mkdir($dir,0777);
  17. }
  18. return file_put_contents($filename,json_encode($value));//若成功返回字節數,不然為false
  19. }
  20. if(!is_file($filename)){
  21. returnFalse;
  22. }else{
  23. return json_decode(file_get_contents($filename),true);
  24. }
  25. }
  26. }
調用類
  1. <?php
  2. //require_once('./apitest.php');
  3. require_once('./file.php');
  4. $arr=array(
  5. 'id'=>1,
  6. 'name'=>'huwei',
  7. 'type'=>array(1,2,3)
  8. );
  9. //echo Response::json(200,'數據返回成功',$arr);
  10. //echo Response::xml(200,'數據返回成功',$arr);
  11. //echo Response::show(200,'數據返回成功',$arr,'array');
  12. $file=newFile();
  13. //echo $file->cacheData('index_cache',$arr); //寫入操作
  14. //var_dump($file->cacheData('index_cache')); //讀取操作
  15. 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等數據結構的存儲
    

 

 

附件列表

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM