首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP API 回應資料格式化類別:支援 JSON、XML、JSONP、陣列、自訂欄位名稱、CDATA 包裹

     編輯:PHP 相關知識

前言

API 介面需統一回應格式(狀態碼、訊息、資料),並支援多種輸出格式(JSON、XML、JSONP、PHP 陣列)。本文提供 DataReturn 類別,封裝格式化邏輯:自訂欄位對應名稱、XML 根節點、JSONP 回呼函數、CDATA 自動包裹、輸出前清理緩衝區。

類別建構參數

$param = array(
    'type' => 'JSON',        // JSON, XML, CALLBACK, ARRAY
    'retcode' => 1000,       // 狀態碼
    'msg' => '',             // 訊息
    'data' => array(...),    // 資料載體
    'format' => array(       // 輸出鍵名對應
        'retcode' => 'status',
        'msg' => 'info',
        'data' => 'result'
    ),
    'xmlroot' => 'xmlroot',  // XML 根節點
    'callback' => 'callback' // JSONP 回呼函數名
);

核心類別程式碼

<?php
class DataReturn {
    private $type; private $xmlroot; private $callback; private $returnData;
    public function __construct($param=array()) { /* 參數預設與建構回應陣列 */ }
    public function data_return() { /* 依 type 分派輸出方法,最後 exit */ }
    private function json_return() { /* JSON 或 JSONP */ }
    private function xml_return() { /* XML 標頭 + xml_encode */ }
    private function callback_return() { /* 輸出  */ }
    private function array_return() { /* print_r 易讀輸出 */ }
    private function xml_encode($data, $root, $encoding) { /* 遞迴陣列轉 XML */ }
    private function data_to_xml($data) { /* 陣列/物件遞迴轉 XML 片段 */ }
    private function cdata($val) { /* 非純英數字元自動包裹 CDATA */ }
    private function exists($obj,$key) { /* 多層鍵名檢查 */ }
}
?>

使用範例

<?php
require_once('DataReturn.class.php');
$param = array(
    'type' => 'JSON',
    'retcode' => '1000',
    'data' => array('id'=>'100','name'=>'fdipzone','gender'=>1,'age'=>28),
    'format' => array('retcode'=>'status','msg'=>'info','data'=>'result')
);
$obj = new DataReturn($param);
$obj->data_return();

輸出範例

JSON

{"status":"1000","info":"","result":{"id":"100","name":"fdipzone","gender":1,"age":28}}

XML

<?xml version="1.0" encoding="utf-8"?>
<xmlroot>
<status>1000</status>
<info></info>
<result>
<id>100</id>
<name><![CDATA[fdipzone]]></name>
<gender>1</gender>
<age>28</age>
</result>
</xmlroot>

設計亮點

  • 欄位名稱映射:內部統一用 retcode/msg/data,輸出時對應自訂名稱,便於版本演進。
  • CDATA 自動判斷:值非純英數字元(含中文、符號)自動包裹 ,確保 XML 合法。
  • 輸出前清理:ob_clean() 避免前段輸出干擾 API 格式。

結語

DataReturn 類別提供輕量級的 API 回應標準化方案,適合中小型專案快速建立一致介面。大型專案建議採用框架內建的 Resource/Transformer 機制(如 Laravel API Resources、Fractal)或標準規格(JSON:API、OpenAPI)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved