午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    php實(shí)現(xiàn)的返回?cái)?shù)據(jù)格式化類實(shí)例
    來源:易賢網(wǎng) 閱讀:945 次 日期:2014-10-11 10:12:03
    溫馨提示:易賢網(wǎng)小編為您整理了“php實(shí)現(xiàn)的返回?cái)?shù)據(jù)格式化類實(shí)例”,方便廣大網(wǎng)友查閱!

    DataReturn.class.php類文件如下:

    <?php

    /** 返回?cái)?shù)據(jù)格式化類

    * Date: 2011-08-15

    * Author: fdipzone

    */

    class DataReturn{ // class start

    private $type;

    private $xmlroot;

    private $callback;

    private $returnData;

    public function __construct($param=array()){

    $this->type = $this->exists($param,'type')? strtoupper($param['type']) : 'JSON'; // 類型 JSON,XML,CALLBACK,ARRAY

    $this->xmlroot = $this->exists($param,'xmlroot')? $param['xmlroot'] : 'xmlroot'; // xml root dom name

    $this->callback = $this->exists($param,'callback')? $param['callback'] : ''; // JS callback function name

    $format = array();

    $format['retcode'] = $this->exists($param,'format.retcode')? $param['format']['retcode'] : 'retcode';//retcode 對(duì)應(yīng)名稱

    $format['msg'] = $this->exists($param,'format.msg')? $param['format']['msg'] : 'msg'; //msg 對(duì)應(yīng)名稱

    $format['data'] = $this->exists($param,'format.data')? $param['format']['data'] : 'data'; //data 對(duì)應(yīng)名稱

    $result = array();

    $result[$format['retcode']] = $this->exists($param,'retcode')? $param['retcode'] : 0;

    $result[$format['msg']] = $this->exists($param,'msg')? $param['msg'] : '';

    $result[$format['data']] = $this->exists($param,'data')? $param['data'] : '';

    $this->returnData = $result;

    }

    //輸出數(shù)據(jù)

    public function data_return(){

    ob_clean();

    switch($this->type){

    case 'JSON':

    $this->json_return();

    break;

    case 'XML':

    $this->xml_return();

    break;

    case 'CALLBACK':

    $this->callback_return();

    break;

    case 'ARRAY':

    $this->array_return();

    break;

    default:

    $this->json_return();

    }

    exit();

    }

    //輸出JSON格式數(shù)據(jù),如有callback參數(shù)則返回JSONP格式

    private function json_return(){

    header('content-type:text/html;charset=utf-8');

    if(empty($this->callback)){

    echo json_encode($this->returnData);

    }else{

    echo $this->callback.'('.json_encode($this->returnData).');';

    }

    }

    //輸出XML格式數(shù)據(jù)

    private function xml_return(){

    header('content-type:text/xml;charset=utf-8');

    echo $this->xml_encode($this->returnData,$this->xmlroot);

    }

    //輸出JSON格式數(shù)據(jù),并調(diào)用callback方法

    private function callback_return(){

    header('content-type:text/html;charset=utf-8');

    $this->callback = empty($this->callback)? 'callback' : $this->callback;

    echo "<script type="text/javascript">rn";

    echo $this->callback."(".json_encode($this->returnData).");rn";

    echo "</script>";

    }

    //輸出數(shù)組格式數(shù)據(jù)

    private function array_return(){

    header('content-type:text/html;charset=utf-8');

    echo '<pre>';

    print_r($this->returnData);

    echo '</pre>';

    }

    //XML編碼

    private function xml_encode($data, $root='xmlroot', $encoding='utf-8') {

    $xml = "<?xml version="1.0" encoding="" . $encoding . ""?>n";

    $xml.= "<" . $root . ">n";

    $xml.= $this->data_to_xml($data);

    $xml.= "</" . $root . ">";

    return $xml;

    }

    //數(shù)組轉(zhuǎn)XML格式

    private function data_to_xml($data) {

    if (is_object($data)) {

    $data = get_object_vars($data);

    }

    $xml = '';

    foreach ($data as $key => $val) {

    is_numeric($key) && $key = "item id="$key"";

    $xml.="<$key>";

    $xml.= ( is_array($val) || is_object($val)) ? $this->data_to_xml($val) : $this->cdata($val);

    list($key, ) = explode(' ', $key);

    $xml.="</$key>n";

    }

    return $xml;

    }

    //判斷數(shù)據(jù)是否存在

    private function exists($obj,$key=''){

    if($key==''){

    return isset($obj) && !empty($obj);

    }else{

    $keys = explode('.',$key);

    for($i=0,$max=count($keys); $i<$max; $i++){

    if(isset($obj[$keys[$i]])){

    $obj = $obj[$keys[$i]];

    }else{

    return false;

    }

    }

    return isset($obj) && !empty($obj);

    }

    }

    //判斷是否需要加上<![CDATA[]]>標(biāo)記

    private function cdata($val){

    if(!empty($val) && !preg_match('/^[A-Za-z0-9+$]/',$val)){

    $val = '<![CDATA['.$val.']]>';

    }

    return $val;

    }

    } // class end

    ?>

    demo示例程序如下:

    <?php

    require_once('DataReturn.class.php');

    $param = array( // DataReturn 參數(shù)

    'type' => 'JSON', // 輸出的類型 JSON,XML,CALLBACK,ARRAY 默認(rèn)為 JSON

    'retcode' => '1000', // retcode 的值,默認(rèn)為0

    'msg' => '', // msg 的值,默認(rèn)為空

    'data' => array( // 要輸出的數(shù)據(jù)

    'id' => '100',

    'name' => 'fdipzone',

    'gender' => 1,

    'age' => 28

    ),

    'format' => array( // 輸出的數(shù)據(jù)key格式,默認(rèn)為 retcode,msg,data

    'retcode' => 'status',

    'msg' => 'info',

    'data' => 'result'

    ),

    'xmlroot' => 'xmlroot', // 當(dāng)type=XML時(shí),XML根節(jié)點(diǎn)名稱,默認(rèn)為xmlroot

    'callback' => 'callback' /* 回調(diào)方法名稱

    type=JSON時(shí),默認(rèn)為空,如不為空,則輸出callback({data});

    type=CALLBACK時(shí),默認(rèn)為callback,自動(dòng)調(diào)用頁(yè)面JS回調(diào)方法

    */

    );

    $obj = new DataReturn($param); // 創(chuàng)建DataReturn類對(duì)象

    $obj->data_return(); // 按格式輸出數(shù)據(jù)

    ?>

    更多信息請(qǐng)查看IT技術(shù)專欄

    更多信息請(qǐng)查看網(wǎng)絡(luò)編程
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2025國(guó)考·省考課程試聽報(bào)名

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)