1. 학습 포인트:
서버 측 –> 호출 인터페이스 – > APP 인터페이스 소개: (PHP 개발 APP 인터페이스)
PHP 인터페이스: 추상 클래스, 인터페이스 정의==>interface.php
===>1. 매우 표준화된 APP 인터페이스(통신 인터페이스): 인터페이스를 통해 데이터를 얻고 데이터를 APP 에 채웁니다. 앱 개발자는 다음 사항에 주의해야 합니다. 앱 주소(인터페이스 주소) 요청 + 데이터 반환 APP(통신) 인터페이스 정의: 1. 인터페이스 주소: http://app.com/api.php?format=xml2 . 인터페이스 파일: app.php는 일부 비즈니스 로직을 처리합니다. (권장 학습:PHP 비디오 튜토리얼
) 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 인터페이스의 기능:데이터 가져오기: 데이터베이스 또는 캐시에서 데이터 가져오기 , 그리고 인터페이스 데이터를 클라이언트에 반환합니다.
데이터 제출: 인터페이스를 통해 서버에 데이터를 제출한 다음 처리 또는 기타 처리를 위해 서버에 저장합니다.
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; }
Browser: http://127.0.0.1/admin/zhw-categorys/jsons
{"code":200,"message":"\u6210\u529f\u54af","data":{"id":1,"name":"jiang"}}
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:
8. 통신 데이터를 캡슐화하는 포괄적인 방법:
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; }
마지막 페이지:
서버:
封装方法:show($code,$message,$data=array(),$type='json/xml')
<?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; } }
위 내용은 PHP로 APP 인터페이스를 개발하는 전체 과정 (1)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!