通信数据封装类的实现 常用于PHP操作类
序
本文主要介绍PHP常用操作类的通信数据封装类实现的相关内容,并分享给大家参考学习。下面就不多说了,我们来看看详细的介绍:
必需品
无论在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 ' : ' maly ' } XML : ROOT nameenner/name age 21/age性别男/性别/ROOT感兴趣的读者可以参考以下参考链接,并非常详细地撰写。
如何包装?
如上所述,XML和JSON是目前主流的通信数据格式,下面就来说说如何对它们进行打包,方便使用。
假设我们在后台操作数据库服务器获取数组数据,我们只需要将数组的Json _ encode函数转换为Json,它就会自动递归检测。对于数组到XML,我们需要严格遵循格式,具体看代码和注释。
源代码
?php/** * TODO:Json格式数据通信*作者:entner * time: 2017-5-8 *版本:1.0 * ready:状态码:int $代码提示消息:字符串$消息消息内容:数组$数据数组包装:数组$结果函数:显示封装多种通信数据格式jsonEncode封装Json格式通信数据xmlToJson封装可扩展标记语言格式通信数据xmlEncode递归调用xmlToJson */Class Json { const Json=' Json ';/** *按综合方式输出通信数据* @参数内部代码状态码* @参数字符消息消息提示*@param数组数据通信数据*@param字符串类型数据类型*返回字符串*/公共函数show($code,$message,$data=array(),$ type=self :3360 JSON){/*检查状态码是否合法*/if(!is _ numeric($ code)){ exit();} $result=array('code'=$code,' message'=$message,' data '=$ data);/* 由客户端传递参数决定封装数据的格式,默认Json格式*/$type=isset($_GET['format'])?$ _ GET[' format ']: self 3360: JSON;if($ type==' XML '){ $ this-xmlEnCode($ code,$message,$ data);退出;//一次不允许并发多种格式,所以没必要执行下面的判断} else if($ type==' JSON '){ $ this-jsonEncode($ code,$message,$ data);退出;} else if($ type==' array '){ var _ dump($ result);退出;}else{ //客户端传来的数据格式为http/ftp/} }/** *输出Json格式通信数据* @参数内部代码状态码* @参数字符消息消息提示*@param数组数据通信数据*返回字符串*/公共函数jsonEnCode($code,$message,$data=array()){ if(!is _ numeric($ code)){ exit();} $result=array('code'=$code,' message'=$message,' data '=$ data);echo JSON _ encode($ result);//json_encode会自动递归转换数组变量返回真;} /** *输出可扩展置标语言格式通信数据* @参数内部代码状态码* @参数字符消息消息提示*@param数组数据通信数据*返回字符串*/公共函数xmlEnCode($code,$message,$data=array()){ if(!is _ numeric($ code)){ exit();} $result=array('code'=$code,' message'=$message,' data '=$ data);/* 拼接可扩展标记语言格式数据*//* 这里一定要注意声明头部信息和可扩展置标语言声明*/header(' Content-type : text/XML ');$xml='?可扩展标记语言版本='1.0 '编码='UTF-8 '?\ n ';$xml .=' root \ n/* XML标签其实也是字符串,所以要用。连接运算符*/$xml .=self : xmltojson($ result);/* 调用xmlToJson函数解析数组转换为节点*/$xml .='/root ';echo $ xml} /** *递归拼接可扩展置标语言数据* @参数内部代码状态码* @参数字符消息消息提示*@param数组数据通信数据*返回字符串*/公共静态函数xmlToJson($ data){ $ XML=$ attr=' ';foreach($数据为$k=$v){ /*XML不允许出现数字标签,所以要么奖数字转化为字母,要么混合拼接,这里采用很合拼接的方式*/if(is _ numeric($ k)){ $ attr=' id=' { $ k } ' ';$ k=' item$xml .=' { $ k } { $ attr } \ n/*因为数组内部可能还存在数组,所以需要自行递归检查一遍,注意,在每次递归的时候,都要连接在$xml尾部,并换行*/$xml .=is_array($v)?self : xmltoj son(v):美元五;$xml .='/{ $ k } \ n ';}else{ $xml .=' { $ k } \ n$xml .=is_array($v)?self : xmltoj son(v):美元五;$xml .='/{ $ k } \ n ';} }返回$ XML } } $ data=array(' name '=' entner ',' type'=array(0='a ',1=' b ');$ try=new Json();$try-xmlEnCode(200,‘success’,$ data);总结
以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
参考链接
1、浅谈服务器端编程语言(专业超文本预处理器的缩写)与手机应用开发即应用程序接口接口开发
2、碳硫比及网工作原理
3、对比分析json及可扩展置标语言
版权声明:通信数据封装类的实现 常用于PHP操作类是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。