当前位置:首页 > 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. { 
  34.     if(file_exists('mock.json')){ 
  35.         $data=json_decode(file_get_contents('mock.json')); 
  36.     }else{ 
  37.         $data=Array( 
  38.             'code'=>200, 
  39.             'desc'=>'Get the default data.', 
  40.             'login'=>true, 
  41.             'data'=>Array( 
  42.                 'name'=>'test api.' 
  43.             ) 
  44.         ); 
  45.     } 
  46.     returnjson_encode($data); 
  47. } 
  48.  
  49.  
  50. /** 
  51.  * 输出字符集,允许结果为gbk、gb2312、utf-8 
  52.  * 如果非法或者未设置,输出utf-8 
  53.  * 
  54.  * @return string 
  55.  */ 
  56. functioncharset() 
  57. { 
  58.     $ret='utf-8'; 
  59.     if(emptyempty($_REQUEST[charset])){ 
  60.         return$ret; 
  61.     }else{ 
  62.         $charset=strtolower($_REQUEST[charset]); 
  63.         if(in_array($charset,array('gbk','gb2312'),true)){ 
  64.             return$charset; 
  65.         }else{ 
  66.             return$ret; 
  67.         } 
  68.     } 
  69. } 
  70.  
  71.  
  72. /** 
  73.  * 拼装json数据 
  74.  * 
  75.  * @return string 
  76.  */ 
  77. functionjsonGenerator() 
  78. { 
  79.     if(!emptyempty($_REQUEST[callback])){ 
  80.         header('Content-Type: application/javascript; charset='.charset()); 
  81.         return$_REQUEST[callback]."(".mockData().");"; 
  82.     }else{ 
  83.         if(!emptyempty($_REQUEST[crossDomain])){ 
  84.             header("Access-Control-Allow-Origin: *"); 
  85.         }; 
  86.         header('Content-type: application/json; charset='.charset()); 
  87.         returnmockData(); 
  88.     } 
  89. } 
  90.  
  91. /** 
  92.  * 输出结果 
  93.  */ 
  94. die(jsonGenerator()); 

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

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

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

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

代码如下:

  1. { 
  2.     "data":1, 
  3.     "w":"测试" 
  4. } 

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

Tags: mock json脚本

分享到: