当前位置:首页 > PHP教程 > php应用 > 列表

PHP实现的简单mock json脚本分享

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-11 10:25:30 浏览: 评论:0 

这篇文章主要介绍了PHP实现的简单mock json脚本分享,本文直接给出实现代码,需要的朋友可以参考下

现在有太多方法去mock,不过当还是要连接到远程服务器上测试真正的返回的时候,如果机器上没有跑node而且有php的话,用这货来临时mock一下,或许更轻松,代码如下:

  1. <?php 
  2. /** 
  3.  * Mock Json for Javascript 
  4.  * 
  5.  * @author soulteary 
  6.  * @date 2014-06-15 
  7.  */ 
  8.  
  9.  
  10. /** 
  11.  * 请求接口字段:字符集 
  12.  */ 
  13. define('charset','charset'); 
  14.  
  15. /** 
  16.  * 请求接口字段:回调函数名 
  17.  */ 
  18. define('callback','callback'); 
  19.  
  20. /** 
  21.  * 请求接口字段:跨域字段 
  22.  */ 
  23. define('crossDomain','cross-domain'); 
  24.  
  25.  
  26. /** 
  27.  * 输出mock数据 
  28.  * 如果存在mock.json文件,则数据从mock.js中获取 
  29.  * 
  30.  * @return string 
  31.  */ 
  32. functionmockData() 
  33.     if(file_exists('mock.json')){ 
  34.         $data=json_decode(file_get_contents('mock.json')); 
  35.     }else
  36.         $data=Array( 
  37.             'code'=>200, 
  38.             'desc'=>'Get the default data.'
  39.             'login'=>true, 
  40.             'data'=>Array( 
  41.                 'name'=>'test api.' 
  42.             ) 
  43.         ); 
  44.     } 
  45.     returnjson_encode($data); 
  46.  
  47.  
  48. /** 
  49.  * 输出字符集,允许结果为gbk、gb2312、utf-8 
  50.  * 如果非法或者未设置,输出utf-8 
  51.  * 
  52.  * @return string 
  53.  */ 
  54. functioncharset() 
  55.     $ret='utf-8'
  56.     if(emptyempty($_REQUEST[charset])){ 
  57.         return$ret
  58.     }else
  59.         $charset=strtolower($_REQUEST[charset]); 
  60.         if(in_array($charset,array('gbk','gb2312'),true)){ 
  61.             return$charset
  62.         }else
  63.             return$ret
  64.         } 
  65.     } 
  66.  
  67.  
  68. /** 
  69.  * 拼装json数据 
  70.  * 
  71.  * @return string 
  72.  */ 
  73. functionjsonGenerator() 
  74.     if(!emptyempty($_REQUEST[callback])){ 
  75.         header('Content-Type: application/javascript; charset='.charset()); 
  76.         return$_REQUEST[callback]."(".mockData().");"
  77.     }else
  78.         if(!emptyempty($_REQUEST[crossDomain])){ 
  79.             header("Access-Control-Allow-Origin: *"); 
  80.         }; 
  81.         header('Content-type: application/json; charset='.charset()); 
  82.         returnmockData(); 
  83.     } 
  84.  
  85. /** 
  86.  * 输出结果 
  87.  */ 
  88. die(jsonGenerator()); 

如果你不想改动php里的data object,觉得麻烦,那么直接改动json好了,你或许会问,那我为啥不直接访问一个json呢,答:

1.你或许需要一个callback包装这个结果;

2.你或许期望这个json允许跨域请求;

3.你或许期望这个json可以自定义header编码…

代码如下:

  1.     "data":1, 
  2.     "w":"测试" 

代码很简单,就不过多描述了。

Tags: mock json脚本

分享到: