Автор оригинала: David Wong.
Спасибо вам за вашу коллекцию и похвалу, что является для меня величайшей поддержкой.
Необходимость
Передача данных между двумя концами в архитектуре B/S и архитектуре C/S( Примечание: Связь здесь относится к сетевым операциям запроса и ответа ) Неизбежно, потому что нет данных, нет контента, нет контента, в чем смысл:) Вообще говоря, процесс выполнения связи в архитектуре C/S выглядит следующим образом:
Процесс выполнения связи в архитектуре B/S выглядит следующим образом:
Выбор
Поскольку передача данных неизбежна, какой режим связи следует выбрать? В настоящее время существует три основных способа передачи данных и взаимодействия между сервером и клиентом: URL, XML и JSON.
URL-адрес является наиболее распространенным и прямым способом, обычно используемым для метода GET. На самом деле, я думаю, что форма формы в СООБЩЕНИИ также по сути является способом URL, но этот способ передачи ограничен и не стандартизирован. Он подходит только для некоторых простых сценариев. И XML, и JSON по сути являются описаниями данных. Их цель-сегментировать, упаковывать и стандартизировать сложные данные для передачи и анализа данных. JSON легче, но более гибкий и мощный, чем XML. Например, выразить мою личную информацию двумя вышеуказанными способами можно следующим образом:
JSON:
{"name": "entner", "age": 21, "gender": "man"}
XML:
entner
21
< gender > male
Заинтересованные читатели могут обратиться к следующим ссылкам и написать очень подробно.
Как инкапсулировать?
Как упоминалось выше, XML и JSON в настоящее время являются основными форматами коммуникационных данных. Теперь давайте поговорим о том, как их удобно инкапсулировать и использовать.
Предполагая, что мы получаем данные массива, работая с сервером базы данных в фоновом режиме, ему нужна только функция json_encode для преобразования массива в Json, которая может автоматически обнаруживать рекурсивно. Для преобразования массива в XML нам нужно строго следовать формату, подробно ознакомиться с кодом и аннотациями.
исходный код
php /** * TODO: Json format data communication * Author:entner * time: 2017-5-8 * version:1.0 * ready: Status code: int $code Tip message: string $message Message content: array $data Array wrapping: array $result function: Show encapsulates multiple communication data formats JsonEncode encapsulates Json format communication data XmlToJson encapsulates communication data in XML format XmlEncode recursively calls xmlToJson */ Class Json{ const JSON = "json"; /** * Output of communication data in an integrated manner *@ param inter code status code *@ Param char message prompt *@ param array data communication data *@ Param string type data type *return string */ public function show($code,$message,$data=array(),$type = self::JSON){ /* Check whether the status code is legitimate*/ if(!is_numeric($code)){ exit(); } $result = array( 'code'=>$code, 'message'=>$message, 'data'=>$data ); /* The format of encapsulated data is determined by the parameters passed by the client, and the default Json format is used.*/ $type = isset($_GET['format'])? $_GET['format']:self::JSON; if($type == 'xml'){ $this->xmlEnCode($code,$message,$data); Exit; // Multiple formats are not allowed concurrently at one time, so it is not necessary to perform the following judgment }else if($type == 'json'){ $this->jsonEncode($code,$message,$data); exit ; }else if($type == 'array'){ var_dump($result); exit; }else{ // The data format from client is http/ftp/ } } /** * Output Json format communication data *@ param inter code status code *@ Param char message prompt *@ param array data communication data *return string */ public function jsonEnCode($code,$message,$data=array()){ if(!is_numeric($code)){ exit(); } $result = array( 'code'=>$code, 'message'=>$message, 'data'=>$data ); Echo json_encode ($result); //json_encode automatically recursively converts array variables return true; } /** * Output XML format communication data *@ param inter code status code *@ Param char message prompt *@ param array data communication data *return string */ public function xmlEnCode($code,$message,$data=array()){ if(!is_numeric($code)){ exit(); } $result = array( 'code'=>$code, 'message'=>$message, 'data'=>$data ); /* splicing XML format data*/ /* It's important to note here the declaration header information and the XML declaration*/ header("Content-type:text/xml"); $xml = "\n"; $xml. ="\ n"; /* XML tags are actually strings, so use the. join operator*/ $xml. = self:: xmlToJson ($result); /* Call the xmlToJson function to parse the array into nodes*/ $xml .= " "; echo $xml; } /** * Recursive splicing of XML data *@ param inter code status code *@ Param char message prompt *@ param array data communication data *return string */ public static function xmlToJson($data){ $xml = $attr = ""; foreach($data as $k => $v){ /* XML does not allow the appearance of digital labels, so either prize numbers into letters, or mixed stitching, which uses a very good stitching method.*/ if(is_numeric($k)){ $attr = " id = '{$k}' "; $k = "item"; $xml .="<{$k}{$attr}>\n"; /* Because there may be arrays inside the array, you need to check them recursively by yourself. Note that at each recursion, you need to connect to the end of $xml and wrap lines.*/ $xml .=is_array($v)?self::xmlToJson($v):$v; $xml .="\n"; }else{ $xml .="<{$k}>\n"; $xml .=is_array($v)?self::xmlToJson($v):$v; $xml .="\n"; } } return $xml; } } $data = array( 'name'=>'entner', 'type'=>array( 0=>'a', 1=>'b' ) ); $try = new Json(); $try->xmlEnCode(200,'success',$data);
Ссылка на ссылку
Говоря о разработке PHP и мобильных приложений, то есть о принципе разработки API-интерфейса C/S B/S и ВЕБ-контрастном анализе JSON и XML
эпилог
В эти дни я переезжаю в свое общежитие. Как только я буду занят, я окажусь здесь в первый раз. Ха-ха. Это все та же старая поговорка. Приветствую ваши комментарии и комментарии.
Оригинал: “https://developpaper.com/implementation-of-common-operating-class-in-php-communication-data-encapsulation-class/”