首页 > 代码库 > PHP API接口

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等数据结构的存储
    

 

 

附件列表

 

PHP API接口