PHP常用操作类之通信数据封装类的实现
前言
本文主要给大家介绍了关于PHP常用操作类之通信数据封装类实现的相关内容,分享出来供大家参考学习,狼蚁网站SEO优化话不多说,来一起看看详细的介绍
必要性
不管在B/S架构中,还是C/S架构中,两端的数据通信(注这里的通信是指的网络请求和回复操作)都无可避免,因为没有数据便没有内容,没有内容,又有什么意义 :)
C/S架构通信执行流程如下
而B/S架构通信执行流程像这样
选择
既然数据通信,不可避免,那应该选择哪种通信方式比较好呢?目前来看服务器与客户端进行数据传输与交互的方式主要有URL、XML、JSON三种方式。
URL方式是最常用也是最直接的,通常用于GET方法,其实我认为POST中的Form表单实质上也是URL方式,但这种传输方式数据有限,也不规范,只适合一些简单场景。XML和JSON实质上都是对数据的描述,目的是对复杂数据进行分割、包装、规范化等一系列处理,方便数据传输和解析,相对来说JSON比XML更轻巧但却更灵活强大,举个例子用以上两种方式表示我的个人信息如下
JSON: {"name":"entner","age":21,"gender":"男"} XML: <ROOT> <name>entner</name> <age>21</age> <gender>男</gender> </ROOT>
有兴趣的读者,可以参看后面的参考链接,写的非常详细。
如何封装?
上面讲了,XML和JSON是目前主流的通信数据格式,狼蚁网站SEO优化就来讲讲如何封装,方便运用。
假设我们在后台操作数据库服务器得到数组数据,对于数组转Json只需要json_encode函数就够了,它会自动递归检测,对于数组转XML,就需要严格按照格式来,具体看代码和注释吧。
Source Code
<?php / TODO:Json格式数据通信 Authorentner time: 2017-5-8 version:1.0 ready: 状态码 int $code 提示消息string $message 消息内容array $data 数组包装array $result function show 封装多种通信数据格式 jsonEncode 封装Json格式通信数据 xmlToJson 封装xml格式通信数据 xmlEncode 递归调用xmlToJson / Class Json{ const JSON = "json"; / 按综合方式输出通信数据 @param inter code 状态码 @param char message 消息提示 @param array data 通信数据 @param string type 数据类型 return string / public function show($code,$message,$data=array(),$type = self::JSON){ / 检查状态码是否合法 / if(!is_numeric($code)){ exit(); } $result = array( 'code'=>$code, 'message'=>$message, 'data'=>$data ); / 由客户端传递参数决定封装数据的格式,默认Json格式 / $type = isset($_GET['format'])? $_GET['format']:self::JSON; if($type == 'xml'){ $this->xmlEnCode($code,$message,$data); exit; //一次不允许并发多种格式,所以没必要执行狼蚁网站SEO优化的判断 }else if($type == 'json'){ $this->jsonEncode($code,$message,$data); exit ; }else if($type == 'array'){ var_dump($result); exit; }else{ // 客户端传来的数据格式为 http/ftp/ } } / 输出Json格式通信数据 @param inter code 状态码 @param char message 消息提示 @param array data 通信数据 return string / public function jsonEnCode($code,$message,$data=array()){ if(!is_numeric($code)){ exit(); } $result = array( 'code'=>$code, 'message'=>$message, 'data'=>$data ); echo json_encode($result); //json_encode会自动递归转换数组变量 return true; } / 输出XML格式通信数据 @param inter code 状态码 @param char message 消息提示 @param array data 通信数据 return string / public function xmlEnCode($code,$message,$data=array()){ if(!is_numeric($code)){ exit(); } $result = array( 'code'=>$code, 'message'=>$message, 'data'=>$data ); / 拼接xml格式数据 / / 这里一定要注意声明头部信息和XML声明 / header("Content-type:text/xml"); $xml = "<?xml version = '1.0' encoding = 'UTF-8'?>\n"; $xml .= "<root>\n"; / XML标签其实也是字符串,所以要用 . 连接运算符 / $xml .= self::xmlToJson($result); / 调用xmlToJson函数解析数组转换为节点 / $xml .= "</root>"; echo $xml; } / 递归拼接XML数据 @param inter code 状态码 @param char message 消息提示 @param array data 通信数据 return string / public static function xmlToJson($data){ $xml = $attr = ""; foreach($data as $k => $v){ /XML不允许出现数字标签,所以要么奖数字转化为字母,要么混合拼接,这里采用很合拼接的方式 / if(is_numeric($k)){ $attr = " id = '{$k}' "; $k = "item"; $xml .="<{$k}{$attr}>\n"; / 因为数组内部可能还存在数组,所以需要自行递归检查一遍,注意,在每次递归的时候,都要连接在$xml尾部,并换行 / $xml .=is_array($v)?self::xmlToJson($v):$v; $xml .="</{$k}>\n"; }else{ $xml .="<{$k}>\n"; $xml .=is_array($v)?self::xmlToJson($v):$v; $xml .="</{$k}>\n"; } } return $xml; } } $data = array( 'name'=>'entner', 'type'=>array( 0=>'a', 1=>'b' ) ); $try = new Json(); $try->xmlEnCode(200,'suess',$data);
以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对狼蚁SEO的支持。
参考链接
1、
2、
3、
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程