成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? PHP常用操作類之通信數據封裝類的實現
全站頭部文字 我要出現在這里
PHP常用操作類之通信數據封裝類的實現 759 2023-12-08   

前言

本文主要給大家介紹了關于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

<?php
/**
 * TODO:Json格式數據通信
 * Author:entner
 * 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; //一次不允許并發多種格式,所以沒必要執行下面的判斷
  }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,'success',$data);

總結

以上就是這篇文章的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對綠夏網的支持。

參考鏈接

1、淺談PHP與手機APP開發即API接口開發

2、C/S B/S 及WEB工作原理

3、對比分析json及XML


主站蜘蛛池模板: 白鹭的简介资料| 小早川怜子作品| 色戒未| 内蒙古电视台节目表| 五年级上册学法大视野答案| fourteen steps课文翻译| bbbbbbbbb免费毛片视频| 42个奥特曼大全图| 美丽丽人| 老阿姨电影电视剧免费| 《水中花》日本电影| 寡妇一级毛片视频| 能哥| 无人区电影免费观看| 帕兰妮·琳帕缇雅空| 2024韩国三级电影| 托比马奎尔《兄弟》| 柏欣彤广场舞| 刀客家族的女人演员表| 七下英语第二单元作文| 风间由美风间ゆみav| 家庭琐事美剧电影观看完整版| 成年人看的小视频| 五年级上数学第一单元试卷 | 口舌 — 视频 | vk| 狂野鸳鸯| zeka| 重口味sm| 囚徒 电影| 光棍电影| 幸福花园在线观看| 男孩变女孩tg动画| 工程力学电子版教材| 井冈山必去的三个景点 | 不要抛弃我| 同性gay| 张俪床戏| 六级词汇电子版| coco电影| 追捕演员表| 巴洛波拉|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103