zoukankan      html  css  js  c++  java
  • 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'?> ";
    19. $xml.="<root> ";
    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等数据结构的存储
        

    附件列表

  • 相关阅读:
    Overloaded的方法是否可以改变返回值的类型
    parseXXX的用法
    java的类型转换问题。int a = 123456;short b = (short)a;System.out.println(b);为什么结果是-7616?
    UVA 10405 Longest Common Subsequence(简单DP)
    POJ 1001 Exponentiation(大数处理)
    POJ 2318 TOYS(计算几何)(二分)
    POJ 1265 Area (计算几何)(Pick定理)
    POJ 3371 Flesch Reading Ease (模拟题)
    POJ 3687 Labeling Balls(拓扑序列)
    POJ 1094 Sorting It All Out(拓扑序列)
  • 原文地址:https://www.cnblogs.com/kinmos/p/6829803.html
Copyright © 2011-2022 走看看