ホームページ > バックエンド開発 > PHPチュートリアル > PHP を使用した APP インターフェイス開発の全プロセス (1)

PHP を使用した APP インターフェイス開発の全プロセス (1)

angryTom
リリース: 2023-04-07 15:04:01
転載
4034 人が閲覧しました

1. 学習ポイント:

サーバー側 –> データベース | キャッシュ –> 通話インターフェイス –> クライアント

2. APP インターフェイス概要: (PHP 開発 APP インターフェイス)

PHP オブジェクト指向インターフェイス: 抽象クラス、インターフェイス定義==>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 (array)) のデータ生成と送信速度が向上します

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 = &#39;&#39;,$data = array())
    {
            if (!is_numeric($code)){
                return &#39;错误&#39;;
            }
             $result = array(
                &#39;code&#39; => $code,
                &#39;message&#39; => $message,
                &#39;data&#39; => $data
        );
        echo json_encode($result);
        exit;
       }
ログイン後にコピー

特定のコントローラー:

    public function jsonsAction()
           {
               $arr = array(
                   &#39;id&#39; => 1,
                   &#39;name&#39; => &#39;jiang&#39;
              );
            $k = wei()->zhwCategory()->json(200,&#39;成功咯&#39;,$arr);
            return $k;
            }
ログイン後にコピー

ブラウザ: http://127.0.0.1/admin/zhw-categorys/jsons

{"code":200,"message":"\u6210\u529f\u54af","data":{"id":1,"name":"jiang"}}
ログイン後にコピー

7.PHP は XML データを生成します。

7.1 PHP は XML データを生成します

1. 文字列を組み立てます

2. システム クラスを使用します: DomDocument

XMLWriter

SimpleXML

DomDocument を使用した場合:

    <?php 
                     $dom = new DomDocument(&#39;1.0&#39;,&#39;utf-8&#39;);
                     $element = $dom->createElement(&#39;test&#39;,&#39;This id root element&#39;);
                     $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=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>\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=&#39;&#39;,$data = array());
         data数据分析:
                 1.array(&#39;index&#39; => &#39;api&#39;);
                 2.array(1,7.89);
        具体:
            server模块下:
ログイン後にコピー
    public function xmlEncode($code,$message = &#39;&#39;,$data=array())
             {
                 if(!is_numeric($code)){
                    return "错误";
                 }
                 $result = array(
                     &#39;code&#39; => $code,
                     &#39;message&#39; => $message,
                     &#39;data&#39; => $data,
                 );
                 header("Content-Type:text/xml");
                 $xml = "<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>\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=&#39;{$key}&#39;";
                   $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(
               &#39;id&#39; => 1,
               &#39;name&#39; => &#39;jiang&#39;,
               &#39;type&#39; =>array(4,5,6),
               &#39;test&#39; =>array(1,45,67=>array(1,2,3)),
            );
           $k = wei()->zhwCategory()->xmlEncode(200,&#39;成功咯&#39;,$arr);
           return $k;
         }
ログイン後にコピー

8 .通信データをカプセル化する包括的な方法:

   封装方法:show($code,$message,$data=array(),$type=&#39;json/xml&#39;)
ログイン後にコピー

#最終ページ:

server:

<?php

namespace Miaoxing\Zhw\Service;

use miaoxing\plugin\BaseModel;

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=&#39;&#39;,$data=array(),$type = self::JSON)
    {
        if (!is_numeric($code)){
            return "错误编码";
        }
        $result = array(
            &#39;code&#39; => $code,
            &#39;message&#39; => $message,
            &#39;data&#39; => $data,
        );
        if($type == &#39;json&#39;){
            self::json($code,$message,$data);
            exit;
        }elseif($type == &#39;array&#39;){
            var_dump($result);
        }elseif ($type == &#39;xml&#39;){
            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 = &#39;&#39;,$data = array())
    {
        if (!is_numeric($code)){
            return &#39;错误&#39;;
        }
        $result = array(
            &#39;code&#39; => $code,
            &#39;message&#39; => $message,
            &#39;data&#39; => $data
        );
        echo json_encode($result);
        exit;
    }
    /**
     * 按xml方式输出通信数据
     * @param integer $code 状态码
     * @param string $message 提示信息
     * @param array $data 数据
     * return string
     */
    public function xmlEncode($code,$message = &#39;&#39;,$data=array())
    {
        if(!is_numeric($code)){
            return "错误";
        }
        $result = array(
            &#39;code&#39; => $code,
            &#39;message&#39; => $message,
            &#39;data&#39; => $data,
        );
        header("Content-Type:text/xml");
        $xml = "<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>\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=&#39;{$key}&#39;";
                $key = "item";
            }
            $xml .= "<{$key} {$attr}>";
            $xml .=is_array($value) ? self::xmlToEncode($value):$value;
            $xml .="</{$key}>\n";
        }
        return $xml;
    }
}
ログイン後にコピー
Controller:
public 
function jsonsAction()
    {
        $arr = array(
            &#39;id&#39; => 1,
            &#39;name&#39; => &#39;jiang&#39;
        );
        $k = wei()-
>zhwCategory()->json(200,&#39;成功咯&#39;,$arr);
        return $k;
    }
    public function xmlsAction()
    {
        $arr = array(
            
&#39;id&#39; => 1,
            &#39;name&#39; => &#39;jiang&#39;,
            &#39;type&#39; =>array(4,5,6),
            &#39;test&#39; =>array(1,45,67=>array(1,2,3)),
        
);
        $k = wei()->zhwCategory()->xmlEncode(200,&#39;成功咯&#39;,$arr);
        return $k;
    }
    public function showAction()
    {
        
$arr = array(
            &#39;id&#39; => 1,
            &#39;name&#39; => &#39;jiang&#39;,
            &#39;type&#39; =>array(4,5,6),
            &#39;test&#39; =>array
(1,45,67=>array(1,2,3)),
        );
        $k = wei()->zhwCategory()->show(200,&#39;成功咯&#39;,$arr,&#39;json&#39;);
        return $k;
    }
ログイン後にコピー

以上がPHP を使用した APP インターフェイス開発の全プロセス (1)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート