Рубрики
Uncategorized

Реализация общего операционного класса в PHP-Класс инкапсуляции данных связи

Автор оригинала: 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/”