前言
本文主要给大家介绍了关于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":"男"} XML: <ROOT> <name>entner</name> <age>21</age> <gender>男</gender> </ROOT>
有兴趣的读者,可以参看后面的参考链接,写的非常详细。
如何封装?
上面讲了,XML和JSON是目前主流的通信数据格式,下面就来讲讲如何封装,方便运用。
假设我们在后台操作数据库服务器得到数组数据,对于数组转Json只需要json_encode函数就够了,它会自动递归检测,对于数组转XML,就需要严格按照格式来,具体看代码和注释吧。
Source Code
<"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'])"Content-type:text/xml"); $xml = "<"; $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)"</{$k}>\n"; }else{ $xml .="<{$k}>\n"; $xml .=is_array($v)"</{$k}>\n"; } } return $xml; } } $data = array( 'name'=>'entner', 'type'=>array( 0=>'a', 1=>'b' ) ); $try = new Json(); $try->xmlEnCode(200,'success',$data);
总结
以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
参考链接
1、浅谈PHP与手机APP开发即API接口开发
2、C/S B/S 及WEB工作原理
3、对比分析json及XML
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】