0

0

PHP常用操作类之通信数据封装类的方法详解

墨辰丷

墨辰丷

发布时间:2018-05-19 13:46:59

|

1631人浏览过

|

来源于php中文网

原创

本篇文章主要介绍php常用操作类之通信数据封装类的方法详解,感兴趣的朋友参考下,希望对大家有所帮助。前言

必要性

不管在B/S架构中,还是C/S架构中,两端的数据通信(注:这里的通信是指的网络请求和回复操作)都无可避免,因为没有数据便没有内容,没有内容,又有什么意义 :)

一般来说C/S架构通信执行流程如下:

而B/S架构通信执行流程像这样:

立即学习PHP免费学习笔记(深入)”;

选择

既然数据通信,不可避免,那应该选择哪种通信方式比较好呢?目前来看服务器与客户端进行数据传输与交互的方式主要有URL、XML、JSON三种方式。

URL方式是最常用也是最直接的,通常用于GET方法,其实我认为POST中的Form表单实质上也是URL方式,但这种传输方式数据有限,也不规范,只适合一些简单场景。XML和JSON实质上都是对数据的描述,目的是对复杂数据进行分割、包装、规范化等一系列处理,方便数据传输和解析,相对来说JSON比XML更轻巧但却更灵活强大,举个例子:用以上两种方式表示我的个人信息如下:

 JSON:
 {"name":"entner","age":21,"gender":"男"}
 
 XML:
 
  entner
  21
  
 

有兴趣的读者,可以参看后面的参考链接,写的非常详细。

如何封装?

易语言学习手册 十天学会易语言图解教程  pdf版
易语言学习手册 十天学会易语言图解教程 pdf版

十天学会易语言图解教程用图解的方式对易语言的使用方法和操作技巧作了生动、系统的讲解。需要的朋友们可以下载看看吧!全书分十章,分十天讲完。 第一章是介绍易语言的安装,以及运行后的界面。同时介绍一个非常简单的小程序,以帮助用户入门学习。最后介绍编程的输入方法,以及一些初学者会遇到的常见问题。第二章将接触一些具体的问题,如怎样编写一个1+2等于几的程序,并了解变量的概念,变量的有效范围,数据类型等知识。其后,您将跟着本书,编写一个自己的MP3播放器,认识窗口、按钮、编辑框三个常用组件。以认识命令及事件子程序。第

下载

上面讲了,XML和JSON是目前主流的通信数据格式,下面就来讲讲如何封装,方便运用。

假设我们在后台操作数据库服务器得到数组数据,对于数组转Json只需要json_encode函数就够了,它会自动递归检测,对于数组转XML,就需要严格按照格式来,具体看代码和注释吧。

Source Code

$code,
   'message'=>$message,
   'data'=>$data
   );

  /* 由客户端传递参数决定封装数据的格式,默认Json格式 */
  $type = isset($_GET['format'])? $_GET['format']:self::JSON;

  if($type == 'xml'){
   $this->xmlEnCode($code,$message,$data);
   exit; //一次不允许并发多种格式,所以没必要执行下面的判断
  }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 = "\n";
  $xml .= "\n";   /*  XML标签其实也是字符串,所以要用 . 连接运算符  */
  $xml .= self::xmlToJson($result); /* 调用xmlToJson函数解析数组转换为节点 */  
  $xml .= "";
  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 .="\n";
   }else{
    $xml .="<{$k}>\n";
    $xml .=is_array($v)?self::xmlToJson($v):$v;
    $xml .="\n";
   }
   
  }
  return $xml;
 }

}

$data = array(
 
 'name'=>'entner',
 'type'=>array(
   0=>'a',
   1=>'b'
  )
 );
$try = new Json();
$try->xmlEnCode(200,'success',$data);

相关推荐:

php mysql数据库如何封装类

php创建多级目录完整封装类的方法

php 验证码封装类

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

32

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

23

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

16

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

6

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

268

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

195

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

170

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

85

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 10.7万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号