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 相关文章推荐
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
Feb 08 PHP
php中用foreach来操作数组的代码
Jul 17 PHP
PHP学习笔记之字符串编码的转换和判断
May 22 PHP
destoon安全设置中需要设置可写权限的目录及文件
Jun 21 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
Jun 22 PHP
ThinkPHP连接数据库及主从数据库的设置教程
Aug 22 PHP
php插入排序法实现数组排序实例
Feb 16 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 PHP
零基础php编程好学吗
Oct 11 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
用PHP实现登陆验证码(类似条行码状)
2006/10/09 PHP
用文本作数据处理
2006/10/09 PHP
PHP数组交集的优化代码分析
2011/03/06 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
python如何通过twisted实现数据库异步插入
2018/03/20 Python
浅谈django orm 优化
2018/08/18 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
Python对接支付宝支付自实现功能
2019/10/10 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
Python sys模块常用方法解析
2020/02/20 Python
python opencv肤色检测的实现示例
2020/12/21 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
招商专员岗位职责
2014/02/08 职场文书
渡河少年教学反思
2014/02/12 职场文书
关爱残疾人演讲稿
2014/05/24 职场文书
品酒会策划方案
2014/05/26 职场文书
护理学专业求职信
2014/06/29 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
环卫处个人工作总结
2015/03/04 职场文书
民事起诉书范本
2015/05/19 职场文书
2016年教师党员承诺书范文
2016/03/24 职场文书
关于保护环境的建议书
2019/06/24 职场文书