PHP以json或xml格式返回请求数据的方法


Posted in PHP onMay 31, 2018

无论是网页还是移动端,都需要向服务器请求数据,那么作为php服务端,如何返回标准的数据呢?

现在主流的数据格式无非就是json和xml,下面我们来看看如何用php来封装一个返回这两种格式数据的类

我们先定义一个响应类

class response{
}

1、以json格式返回数据

json格式返回数据比较简单,直接将我们后台获取到的数据,以标准json格式返回给请求端即可

//按json格式返回数据
public static function json($code,$message,$data=array()){
 if(!is_numeric($code)){
  return '';
 }
 $result=array(
  "code"=>$code,
  "message"=>$message,
  "data"=>$data
 );
 echo json_encode($result);
}

2、以xml格式返回数据

这种方式需要遍历data里面的数据,如果数据里有数组还要递归遍历。还有一种特殊情况,当数组的下标为数字时,xml格式会报错,需要将xml中数字标签替换

//按xml格式返回数据
 public static function xmlEncode($code,$message,$data=array()){
  if(!is_numeric($code)){
   return '';
  }
  $result=array(
   "code"=>$code,
   "message"=>$message,
   "data"=>$data
  );
  header("Content-Type:text/xml");
  $xml="<?xml version='1.0' encoding='UTF-8'?>";
  $xml.="<root>";
  $xml.=self::xmlToEncode($result);
  $xml.="</root>";
  echo $xml;
 }
 public static function xmlToEncode($data){
  $xml=$attr='';
  foreach($data as $key=>$value){
   if(is_numeric($key)){
    $attr="id='{$key}'";
    $key="item";
   }
   $xml.="<{$key} {$attr}>";
   $xml.=is_array($value)?self::xmlToEncode($value):$value;
   $xml.="</{$key}>";
  }
  return $xml;
 }
}

3、将两种格式封装为一个方法,完整代码如下:

class response{
 public static function show($code,$message,$data=array(),$type='json'){
  /**
  *按综合方式输出通信数据
  *@param integer $code 状态码
  *@param string $message 提示信息
  *@param array $data 数据
  *@param string $type 数据类型
  *return string
  */
  if(!is_numeric($code)){
   return '';
  }
  $result=array(
   "code"=>$code,
   "message"=>$message,
   "data"=>$data
  );
  if($type=='json'){
   self::json($code,$message,$data);
   exit;
  }elseif($type=='xml'){
   self::xmlEncode($code,$message,$data);
   exit;
  }else{
   //后续添加其他格式的数据
  }
 }
 //按json格式返回数据
 public static function json($code,$message,$data=array()){
  if(!is_numeric($code)){
   return '';
  }
  $result=array(
   "code"=>$code,
   "message"=>$message,
   "data"=>$data
  );
  echo json_encode($result);
 }
 //按xml格式返回数据
 public static function xmlEncode($code,$message,$data=array()){
  if(!is_numeric($code)){
   return '';
  }
  $result=array(
   "code"=>$code,
   "message"=>$message,
   "data"=>$data
  );
  header("Content-Type:text/xml");
  $xml="<?xml version='1.0' encoding='UTF-8'?>";
  $xml.="<root>";
  $xml.=self::xmlToEncode($result);
  $xml.="</root>";
  echo $xml;
 }
 public static function xmlToEncode($data){
  $xml=$attr='';
  foreach($data as $key=>$value){
   if(is_numeric($key)){
    $attr="id='{$key}'";
    $key="item";
   }
   $xml.="<{$key} {$attr}>";
   $xml.=is_array($value)?self::xmlToEncode($value):$value;
   $xml.="</{$key}>";
  }
  return $xml;
 }
}
$data=array(1,231,123465,array(9,8,'pan'));
response::show(200,'success',$data,'json');

这样我们调用show方法时,需要传递四个参数,第四个参数为想要返回的数据格式,默认为json格式,效果如下:

PHP以json或xml格式返回请求数据的方法

我们再调用一次show方法,以xml格式返回数据:

response::show(200,'success',$data,'xml');

效果如下:

PHP以json或xml格式返回请求数据的方法

这样我们就完成了对这两种数据格式的封装,可以随意返回这两种格式的数据了

以上这篇PHP以json或xml格式返回请求数据的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
rrmdir php中递归删除目录及目录下的文件
May 15 PHP
php变量范围介绍
Oct 15 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
Jun 10 PHP
完善CodeIgniter在IDE中代码提示功能的方法
Jul 19 PHP
PHP生成数组再传给js的方法
Aug 07 PHP
php使用pdo连接并查询sql数据库的方法
Dec 24 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
Jul 29 PHP
微信 getAccessToken方法详解及实例
Nov 23 PHP
php递归函数怎么用才有效
Feb 24 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
Yii2处理密码加密及验证的方法
May 12 PHP
php实现推荐功能的简单实例
Sep 29 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
May 30 #PHP
php支付宝系列之电脑网站支付
May 30 #PHP
Laravel框架使用Redis的方法详解
May 30 #PHP
php实现微信支付之退款功能
May 30 #PHP
分享5个非常有用的Laravel Blade指令
May 30 #PHP
php实现微信支付之企业付款
May 30 #PHP
ThinkPHP5框架缓存查询操作分析
May 30 #PHP
You might like
2.PHP入门
2006/10/09 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
php中explode与split的区别介绍
2012/10/03 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
PHP实现文件下载详解
2014/11/27 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
PHP中的session安全吗?
2016/01/22 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
浅谈javascript 面向对象编程
2009/10/28 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
jQuery实现获取元素索引值index的方法
2016/09/18 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
Python 文件读写操作实例详解
2014/03/12 Python
Python使用py2exe打包程序介绍
2014/11/20 Python
深入理解Python中的元类(metaclass)
2015/02/14 Python
Python中random模块用法实例分析
2015/05/19 Python
Request的中断和ErrorHandler实例解析
2018/02/12 Python
解析Python的缩进规则的使用
2019/01/16 Python
python实现年会抽奖程序
2019/01/22 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
会计专业的自荐信
2013/12/12 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
会计电算化专业求职信
2014/06/10 职场文书
爱心募捐感谢信
2015/01/22 职场文书
2015年酒店工作总结
2015/04/28 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server
Nginx报404错误的详细解决方法
2022/07/23 Servers