PHP class encapsulation is relatively difficult for beginners to understand. This article mainly introduces relevant information about the implementation of communication data encapsulation classes of PHP common operation classes. The article introduces it in detail through example code, which is very useful for everyone. It has certain reference and learning value, and I hope it can help everyone.
Necessity
Whether it is in the B/S architecture or the C/S architecture, the data communication at both ends (note: the communication here refers to the network request and reply operations ) are inevitable, because without data, there is no content, and without content, what’s the point:)
Generally speaking, the C/S architecture communication execution process is as follows:
The B/S architecture communication execution process is like this:
Choose
Since data communication is inevitable , then which communication method should be better? At present, there are three main ways of data transmission and interaction between the server and the client: URL, XML, and JSON.
The URL method is the most commonly used and direct. It is usually used for the GET method. In fact, I think the Form form in POST is actually the URL method. However, this transmission method has limited data and is not standardized. It is only suitable for Some simple scenes. XML and JSON are essentially descriptions of data. The purpose is to segment, package, standardize and other processing of complex data to facilitate data transmission and analysis. Relatively speaking, JSON is lighter but more flexible and powerful than XML. For example Example: Use the above two methods to express my personal information as follows:
JSON: {"name":"entner","age":21,"gender":"男"} XML:entner 21 男
Interested readers can refer to the reference link below, which is very detailed.
How to encapsulate?
As mentioned above, XML and JSON are currently the mainstream communication data formats. Let’s talk about how to encapsulate them for easy use.
Assume that we operate the database server in the background to obtain array data. To convert the array to Json, we only need the json_encode function. It will automatically detect recursion. For the array to XML, we need to strictly follow the format. See the code for details. and comments.
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 .="{$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,'success',$data);
Related recommendations:
Detailed explanation of the communication data encapsulation class in PHP
How to implement operation class (communication data encapsulation class) in php?
Used to analyze, monitor and transform communication data MySQL-Proxy(1)[Figure]_MySQL
The above is the detailed content of Implementation code sharing of PHP communication data encapsulation class. For more information, please follow other related articles on the PHP Chinese website!