1. 学習ポイント:
サーバー側 –> データベース | キャッシュ –> 通話インターフェイス –> クライアント
2. APP インターフェイス概要: (PHP 開発 APP インターフェイス)
PHP オブジェクト指向インターフェイス: 抽象クラス、インターフェイス定義==>interface.php
===>1. 非常に仕様
APP インターフェイス (通信インターフェイス): インターフェイスを通じてデータを取得し、そのデータを APP に入力します。
#—>APP 開発者の注意: APP アドレス (インターフェイス アドレス) の返信データを要求しますAPP (通信) インターフェイス定義: 1. インターフェイス アドレス: http://app.com/api.php?format=xml2. インターフェイス ファイル: 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>
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; }
public function jsonsAction() { $arr = array( 'id' => 1, 'name' => 'jiang' ); $k = wei()->zhwCategory()->json(200,'成功咯',$arr); return $k; }
{"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('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 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='',$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 インターフェイス開発の全プロセス (1)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。