PHP開發APP介面全過程(一)

2020-07-16 10:05:48
1、學習要點:

伺服器端 –> 資料庫|快取 –>呼叫介面 –>用戶端

2、APP介面介紹:(PHP開發APP介面)

PHP物件導向的介面:抽象類,interface定義 ==>interface.php

===>1.很規範

APP介面(通訊介面):通過介面得到資料,將資料填充到APP中

—>APP開發人員關注:請求APP地址(介面地址)+返回資料

APP(通訊)介面定義:

1.介面地址:http://app.com/api.php?format=xml

2.介面檔案:app.php處理一些業務邏輯

3.介面資料

(推薦學習:PHP視訊教學

3.用戶端APP通訊:

APP是如何進行通訊的:

      C   (介面地址:http://app.com/api.php?format=xml/json)     S
   用戶端APP            ------------------------------>             伺服器
                      <-----------------------------                                    
                         返回資料

4.用戶端APP通訊格式區別

1.xml:擴充套件標示語言(1.用來標記資料,定義資料型別,是一種允許使用者對自己的標示語言進行定義的源語言,xml格式統一,跨平台和語言,非常適合資料傳輸和通訊,早已成為業界公認的標準)

<?xml version="1.0" encoding="UTF-8"?>
    <item>
        <title>測試</title>
        <test id="1">
        <description>測試oen</description>
        <address>深圳</address>
    </item>

2.json:一種清涼級別的資料交換格式,具有良好的可讀和便於快速編寫的特性,可在不同平台證件進行資料交換,JSON採用相容性很高的,完全獨立於語言文字格式。這種特性使JSON成為理想的資料交換語言。

XML的可讀性要好,JSON的生成資料性 (json_encode(陣列)) 傳輸速度方面要好

5.APP介面做的那些事:

獲取資料:從資料庫中或快取中獲取資料,然後通過介面資料返回用戶端

提交資料:通過介面提交資料給伺服器,然後通過伺服器入庫處理,或者其他處理

6.JSON方式封裝通訊介面

PHP生成json資料:json_encode($arr);

注釋:該函數只能接受UTF-8編碼的資料,如果傳遞其他格式的資料該函數會返回null

通訊資料標注格式:

code 狀態碼(200 400等) 
message 提示資訊(郵箱格式不正確;資料返回成功等) 
data 返回相應的資料 
—————————- 
-JSON 
code : 200 
message :」資料返回成功」 
-data 
id :1 
name : 「測試」

範例:

  某個server中:
    public  function json($code,$message = '',$data = array())
    {
            if (!is_numeric($code)){
                return '錯誤';
            }
             $result = array(
                'code' => $code,
                'message' => $message,
                'data' => $data
        );
        echo json_encode($result);
        exit;
       }

某個Controller:

    public function jsonsAction()
           {
               $arr = array(
                   'id' => 1,
                   'name' => 'jiang'
              );
            $k = wei()->zhwCategory()->json(200,'成功咯',$arr);
            return $k;
            }

瀏覽器:http://127.0.0.1/admin/zhw-categorys/jsons

{"code":200,"message":"u6210u529fu54af","data":{"id":1,"name":"jiang"}}

7.PHP生成XML資料:

7.1PHP生成XML資料

1.組裝字串

2.使用系統類:DomDocument

XMLWriter

SimpleXML

如用DomDocument:

    <?php 
                     $dom = new DomDocument('1.0','utf-8');
                     $element = $dom->createElement('test','This id root element');
                     $dom->appendChild($element);
                     echo $dom->saveXML();
              ?>

====>結果:

           <?xml version="1.0" encoding="utf-8"?>
           <test>This is the root element</test>

使用組裝字串的簡單範例性:

    public static function xml()
            {
                  header("Content-Type:text/html");
                  $xml = "<?xml version='1.0' encoding='UTF-8'?>n";
                  $xml .= "<root>n";
                  $xml .= "<code>200</code>n";
                  $xml .= "<message>資料返回成功</message>n";
                  $xml .= "<data>n";
                  $xml .="<id>1</id>n";
                  $xml .="<name>測試</name>n";
                  $xml .="</data>n";
                  $xml .="<root>";
                  echo $xml;
             }
  7.2封裝XML資料方法:
          封裝方法:xmlEncode($code,$message='',$data = array());
         data資料分析:
                 1.array('index' => 'api');
                 2.array(1,7.89);
        具體:
            server模組下:
    public function xmlEncode($code,$message = '',$data=array())
             {
                 if(!is_numeric($code)){
                    return "錯誤";
                 }
                 $result = array(
                     'code' => $code,
                     'message' => $message,
                     'data' => $data,
                 );
                 header("Content-Type:text/xml");
                 $xml = "<?xml version='1.0' encoding='UTF-8'?>n";
                 $xml .= "<root>n";
                 $xml .=self::xmlToEncode($result);
                 $xml .="</root>";
                 echo $xml;
             }
        //對資料再處理
    public function xmlToEncode($data){
               $xml = $attr ="";
               foreach ($data as $key=>$value){
               if(is_numeric($key)){
                   $attr = "id='{$key}'";
                   $key = "item";
               }
               $xml .= "<{$key} {$attr}>";  //它們{$key} {$attr}之間要有一個小空格
               $xml .=is_array($value) ? self::xmlToEncode($value):$value;
               $xml .="</{$key}>n";
            }
               return $xml;
            }
某個Controller:
     public function xmlsAction()
        {
            $arr = array(
               'id' => 1,
               'name' => 'jiang',
               'type' =>array(4,5,6),
               'test' =>array(1,45,67=>array(1,2,3)),
            );
           $k = wei()->zhwCategory()->xmlEncode(200,'成功咯',$arr);
           return $k;
         }

8.綜合方式封裝通訊資料方法:

   封裝方法:show($code,$message,$data=array(),$type='json/xml')

最終頁面:

server:

<?php

namespace MiaoxingZhwService;

use miaoxingpluginBaseModel;

class ZhwCategory extends BaseModel
{
    const JSON = "json";
    /**
     * 按x綜合方式輸出通訊資料
     * @param integer $code 狀態碼
     * @param string $message 提示資訊
     * @param array $data 資料
     * @param string $type 資料型別
     * return string
     */
    public function show($code,$message='',$data=array(),$type = self::JSON)
    {
        if (!is_numeric($code)){
            return "錯誤編碼";
        }
        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data,
        );
        if($type == 'json'){
            self::json($code,$message,$data);
            exit;
        }elseif($type == 'array'){
            var_dump($result);
        }elseif ($type == 'xml'){
            self::xmlEncode($code,$message,$data);
            exit;
        }else{
            //TODO
        }
    }
    /**
     * 按json方式輸出通訊資料
     * @param integer $code 狀態碼
     * @param string $message 提示資訊
     * @param array $data 資料
     * return string
     */
    public  function json($code,$message = '',$data = array())
    {
        if (!is_numeric($code)){
            return '錯誤';
        }
        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data
        );
        echo json_encode($result);
        exit;
    }
    /**
     * 按xml方式輸出通訊資料
     * @param integer $code 狀態碼
     * @param string $message 提示資訊
     * @param array $data 資料
     * return string
     */
    public function xmlEncode($code,$message = '',$data=array())
    {
        if(!is_numeric($code)){
            return "錯誤";
        }
        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data,
        );
        header("Content-Type:text/xml");
        $xml = "<?xml version='1.0' encoding='UTF-8'?>n";
        $xml .= "<root>n";
        $xml .=self::xmlToEncode($result);
        $xml .="</root>";
        echo $xml;
    }
    //對資料再處理
    public function xmlToEncode($data){
        $xml = $attr ="";
        foreach ($data as $key=>$value){
            if(is_numeric($key)){
                $attr = "id='{$key}'";
                $key = "item";
            }
            $xml .= "<{$key} {$attr}>";
            $xml .=is_array($value) ? self::xmlToEncode($value):$value;
            $xml .="</{$key}>n";
        }
        return $xml;
    }
}
Controller:
public 
function jsonsAction()
    {
        $arr = array(
            'id' => 1,
            'name' => 'jiang'
        );
        $k = wei()-
>zhwCategory()->json(200,'成功咯',$arr);
        return $k;
    }
    public function xmlsAction()
    {
        $arr = array(
            
'id' => 1,
            'name' => 'jiang',
            'type' =>array(4,5,6),
            'test' =>array(1,45,67=>array(1,2,3)),
        
);
        $k = wei()->zhwCategory()->xmlEncode(200,'成功咯',$arr);
        return $k;
    }
    public function showAction()
    {
        
$arr = array(
            'id' => 1,
            'name' => 'jiang',
            'type' =>array(4,5,6),
            'test' =>array
(1,45,67=>array(1,2,3)),
        );
        $k = wei()->zhwCategory()->show(200,'成功咯',$arr,'json');
        return $k;
    }

以上就是PHP開發APP介面全過程(一)的詳細內容,更多請關注TW511.COM其它相關文章!