国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP常用操作類實現(xiàn)——通信數(shù)據(jù)封裝類

mudiyouyou / 1079人閱讀

摘要:方式是最常用也是最直接的通常用于方法,其實我認為中的表單實質(zhì)上也是方式,但這種傳輸方式數(shù)據(jù)有限,也不規(guī)范,只適合一些簡單場景。如何封裝上面講了,和是目前主流的通信數(shù)據(jù)格式,下面就來講講如何封裝,方便運用。

謝謝大家的收藏與贊,這是對我最大的鼓勵。

必要性

不管在B/S架構(gòu)中,還是C/S架構(gòu)中,兩端的數(shù)據(jù)通信(注:這里的通信是指的網(wǎng)絡(luò)請求和回復(fù)操作)都無可避免,因為沒有數(shù)據(jù)便沒有內(nèi)容,沒有內(nèi)容,又有什么意義 :)
一般來說C/S架構(gòu)通信執(zhí)行流程如下:

而B/S架構(gòu)通信執(zhí)行流程像這樣:

選擇

既然數(shù)據(jù)通信,不可避免,那應(yīng)該選擇哪種通信方式比較好呢?目前來看服務(wù)器與客戶端進行數(shù)據(jù)傳輸與交互的方式主要有URL、XML、JSON三種方式。

URL方式是最常用也是最直接的,通常用于GET方法,其實我認為POST中的Form表單實質(zhì)上也是URL方式,但這種傳輸方式數(shù)據(jù)有限,也不規(guī)范,只適合一些簡單場景。
XML和JSON實質(zhì)上都是對數(shù)據(jù)的描述,目的是對復(fù)雜數(shù)據(jù)進行分割、包裝、規(guī)范化等一系列處理,方便數(shù)據(jù)傳輸和解析,相對來說JSON比XML更輕巧但卻更靈活強大,舉個例子:用以上兩種方式表示我的個人信息如下:

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

有興趣的讀者,可以參看后面的參考鏈接,寫的非常詳細。

如何封裝?

上面講了,XML和JSON是目前主流的通信數(shù)據(jù)格式,下面就來講講如何封裝,方便運用。

假設(shè)我們在后臺操作數(shù)據(jù)庫服務(wù)器得到數(shù)組數(shù)據(jù),對于數(shù)組轉(zhuǎn)Json只需要json_encode函數(shù)就夠了,它會自動遞歸檢測,對于數(shù)組轉(zhuǎn)XML,就需要嚴格按照格式來,具體看代碼和注釋吧。

Source Code
$code,
            "message"=>$message,
            "data"=>$data
            );

        /* 由客戶端傳遞參數(shù)決定封裝數(shù)據(jù)的格式,默認Json格式 */
        $type = isset($_GET["format"])? $_GET["format"]:self::JSON;

        if($type == "xml"){
            $this->xmlEnCode($code,$message,$data);
            exit;    //一次不允許并發(fā)多種格式,所以沒必要執(zhí)行下面的判斷
        }else if($type == "json"){
            $this->jsonEncode($code,$message,$data);
            exit ;
        }else if($type == "array"){
            var_dump($result);
            exit;
        }else{
            // 客戶端傳來的數(shù)據(jù)格式為 http/ftp/
        }

    }


/**
     *輸出Json格式通信數(shù)據(jù)
     *@param inter code 狀態(tài)碼
     *@param char  message 消息提示
     *@param array data 通信數(shù)據(jù)
     *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會自動遞歸轉(zhuǎn)換數(shù)組變量
        return true;
    }

    /**
     *輸出XML格式通信數(shù)據(jù)
     *@param inter code 狀態(tài)碼
     *@param char  message 消息提示
     *@param array data 通信數(shù)據(jù)
     *return string
    */    
    public function xmlEnCode($code,$message,$data=array()){
        if(!is_numeric($code)){
            exit();
        }
        $result = array(
            "code"=>$code,
            "message"=>$message,
            "data"=>$data
            );

        /*    拼接xml格式數(shù)據(jù)    */
        
        
        /*    這里一定要注意聲明頭部信息和XML聲明    */
        header("Content-type:text/xml");
        $xml  = "
";
        $xml .= "
";          /*     XML標(biāo)簽其實也是字符串,所以要用 . 連接運算符     */
        $xml .= self::xmlToJson($result); /* 調(diào)用xmlToJson函數(shù)解析數(shù)組轉(zhuǎn)換為節(jié)點 */        
        $xml .= "";
        echo $xml;        
    }

    /**
     *遞歸拼接XML數(shù)據(jù)
     *@param inter code 狀態(tài)碼
     *@param char  message 消息提示
     *@param array data 通信數(shù)據(jù)
     *return string
    */    
    public static function xmlToJson($data){
        $xml = $attr = "";
        foreach($data as $k => $v){

            /*XML不允許出現(xiàn)數(shù)字標(biāo)簽,所以要么獎數(shù)字轉(zhuǎn)化為字母,要么混合拼接,這里采用很合拼接的方式 */
            if(is_numeric($k)){
                $attr = " id = "{$k}" ";
                $k = "item";
                $xml .="<{$k}{$attr}>
";
                /*    因為數(shù)組內(nèi)部可能還存在數(shù)組,所以需要自行遞歸檢查一遍,注意,在每次遞歸的時候,都要連接在$xml尾部,并換行    */
                $xml .=is_array($v)?self::xmlToJson($v):$v;
                $xml .="
";
            }else{
                $xml .="<{$k}>
";
                $xml .=is_array($v)?self::xmlToJson($v):$v;
                $xml .="
";
            }
            
        }
        return $xml;
    }

}

$data = array(
    
    "name"=>"entner",
    "type"=>array(
            0=>"a",
            1=>"b"
        )
    );
$try = new Json();
$try->xmlEnCode(200,"success",$data);
參考鏈接

淺談PHP與手機APP開發(fā)即API接口開發(fā)
C/S B/S 及WEB工作原理
對比分析json及XML

結(jié)語

這幾天在搬宿舍,剛忙完,第一時間就來了,哈哈。
還是那句老話,歡迎各位留言和評論。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/110378.html

相關(guān)文章

  • PHP常用操作實現(xiàn)——通信數(shù)據(jù)封裝

    摘要:方式是最常用也是最直接的通常用于方法,其實我認為中的表單實質(zhì)上也是方式,但這種傳輸方式數(shù)據(jù)有限,也不規(guī)范,只適合一些簡單場景。如何封裝上面講了,和是目前主流的通信數(shù)據(jù)格式,下面就來講講如何封裝,方便運用。 謝謝大家的收藏與贊,這是對我最大的鼓勵。 必要性 不管在B/S架構(gòu)中,還是C/S架構(gòu)中,兩端的數(shù)據(jù)通信(注:這里的通信是指的網(wǎng)絡(luò)請求和回復(fù)操作)都無可避免,因為沒有數(shù)據(jù)便沒有內(nèi)容,沒...

    YancyYe 評論0 收藏0
  • PHP常用操作實現(xiàn)——數(shù)據(jù)操作

    摘要:概述謝謝大家的收藏與贊,這是對我最大的鼓勵。這一系列文章主要是一些常用的類操作,回顧一下面向?qū)ο螅乙恢敝铝τ谛“孜恼碌淖珜懀驗槲乙彩切“祝嘈庞腥诵枰Mx者能夠喜歡。 概述 謝謝大家的收藏與贊,這是對我最大的鼓勵。這一系列文章主要是一些PHP常用的類操作,回顧一下面向?qū)ο螅乙恢敝铝τ谛“孜恼碌淖珜懀驗槲乙彩切“祝嘈庞腥诵枰Mx者能夠喜歡。 說明 關(guān)于PHP語言實現(xiàn)...

    wmui 評論0 收藏0
  • PHP常用操作實現(xiàn)——數(shù)據(jù)操作

    摘要:概述謝謝大家的收藏與贊,這是對我最大的鼓勵。這一系列文章主要是一些常用的類操作,回顧一下面向?qū)ο螅乙恢敝铝τ谛“孜恼碌淖珜懀驗槲乙彩切“祝嘈庞腥诵枰Mx者能夠喜歡。 概述 謝謝大家的收藏與贊,這是對我最大的鼓勵。這一系列文章主要是一些PHP常用的類操作,回顧一下面向?qū)ο螅乙恢敝铝τ谛“孜恼碌淖珜懀驗槲乙彩切“祝嘈庞腥诵枰Mx者能夠喜歡。 說明 關(guān)于PHP語言實現(xiàn)...

    sshe 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<