Home  >  Article  >  Backend Development  >  The whole process of developing APP interface with PHP (1)

The whole process of developing APP interface with PHP (1)

angryTom
angryTomforward
2019-10-12 14:22:133997browse

1. Learning points:

Server side –> Database | Cache –> Call interface –> Client

2. APP Interface introduction: (PHP development APP interface)

PHP object-oriented interface: abstract class, interface definition==>interface.php

===>1. Very Specification

APP interface (communication interface): obtain data through the interface and fill the data into the APP

—>APP developer attention: request APP address (interface address) return data

APP (communication) interface definition:

1. Interface address: http://app.com/api.php?format=xml

2. Interface file: app. PHP handles some business logic

3. Interface data

(Recommended learning: PHP video tutorial)

3. Client APP communication :

How APP communicates:

      C   (接口地址:http://app.com/api.php?format=xml/json)     S
   客户端APP            ------------------------------>             服务器
                      <-----------------------------                                    
                         返回数据

4. Client APP communication format difference

1.xml: extension tag Language (1. Used to mark data and define data types. It is a source language that allows users to define their own markup languages. The XML format is unified, cross-platform and language, very suitable for data transmission and communication, and has long been recognized by the industry. Standard)

<?xml version="1.0" encoding="UTF-8"?>
    <item>
        <title>测试</title>
        <test id="1">
        <description>测试oen</description>
        <address>深圳</address>
    </item>

2.json: A cool-level data exchange format with good readability and easy to write quickly. It can be used for data exchange on different platform certificates. JSON uses high compatibility , completely independent of the language text format. This property makes JSON an ideal data exchange language.

The readability of XML is better, the data generation of JSON (json_encode (array)) and the transmission speed are better

5. What the APP interface does:

Get data: Get data from the database or cache, and then return the data to the client through the interface

Submit data: Submit the data to the server through the interface, and then enter the database for processing through the server, or other processing

6.JSON encapsulation communication interface

PHP generates json data: json_encode($arr);

Note: This function can only accept UTF -8 encoded data, if you pass data in other formats, the function will return null

Communication data annotation format:

code 状态码(200 400等) 
message 提示信息(邮箱格式不正确;数据返回成功等) 
data 返回相应的数据 
—————————- 
-JSON 
code : 200 
message :”数据返回成功” 
-data 
id :1 
name : “测试”

Instance:

  某个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;
       }

A certain 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;
            }

Browser: http://127.0.0.1/admin/zhw-categorys/jsons

{"code":200,"message":"\u6210\u529f\u54af","data":{"id":1,"name":"jiang"}}

7.PHP generates XML data:

7.1 PHP generates XML data

1. Assemble string

2. Use system class: DomDocument

XMLWriter

SimpleXML

If used 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();
              ?>

====>Result:

           <?xml version="1.0" encoding="utf-8"?>
           <test>This is the root element</test>

Simple instantiation using assembled string:

    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 .Comprehensive method of encapsulating communication data:

   封装方法:show($code,$message,$data=array(),$type=&#39;json/xml&#39;)

Final page:

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;
    }

The above is the detailed content of The whole process of developing APP interface with PHP (1). For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete