接口的封装
来源:互联网 发布:硬笔书法网络免费班 编辑:程序博客网 时间:2024/05/22 16:55
php接口和APP(通信)接口的区别
什么是php接口?
接口interface 是一个规定,给人继承用的东西,有点像抽象类
在里面定义的方法,却不去实例化,而需要别的类去implements 它,而且必须一一实现接口定义的所有方法。
例如:
interface Shop { public function buy($gid); public function sell($gid); public function view($gid); }
我声明一个shop接口类,定义了三个方法:买(buy),卖(sell),看(view),那么继承此类的所有子类都必须实现这3个方法少一个都 不行,如果子类没有实现这些话,就无法运行。实际上接口类说白了,就是一个类的模板,一个类的规定,如果你属于这类,你就必须遵循我的规定,少一个都不 行,但是具体你怎么去做,我不管,那是你的事,如:
class BaseShop implements Shop { public function buy($gid) { echo('你购买了ID为 :'.$gid.'的商品'); } public function sell($gid) { echo('你卖了ID为 :'.$gid.'的商品'); } public function view($gid) { echo('你查看了ID为 :'.$gid.'的商品'); } }
什么是通信接口?
程序设计方面App 是Application 的缩写
在vc++中,app是应用程序的入口和出口,一般在这里处理一些启动和退出程序时需要读取或写入的设置信息,还有设置一些全局变量
接口的组成
基本组成部分
- 接口地址:客户端发送请求或者是接收后台发送过来的数据。
- 接口文件(在服务器端):处理业务逻辑。
- 接口数据。
接口数据类型
目前用来写接口的数据类型比较流行的是json和XML两种类型。
XML:XML 是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分。您可以创建内容,然后使用限定标记标记它,从而使每个单词、短语或块成为可识别、可分类的信息。您创建的文件,或文档实例 由元素(标记)和内容构成。当从打印输出读取或以电子形式处理文档时,元素能够帮助更好地理解文档。元素的描述性越强,文档各部分越容易识别。自从出现标记至今,带有标记的内容就有一个优势,即在计算机系统缺失时,仍然可以通过标记理解打印出来数据。
json:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
JSON和XML的区别
我们可以从三个方面进行行分析:
可读性:重我们打印出来的数据结构我们不难看出,XML数据结构是一个树形结构,所有的节点和数据值可以一目了然,而json则是以一个key:values的形式呈现出来,数据少的时候还好说,一旦数据多了根本看不出来。
XML数据结构
JSON数据结构数据生成:json要比XML便捷,XML的节点必须成对出现,要有始有终。json数据只需要以key/values的形式出项无形中节约了存储空间。
数据传输:在数据传输方面json数据要比XML小所以json的传输效率要比XML要好。
注意:
- json格式只能接受UTF-8编码的数据,其他编码方式的数据会返回null.
- XML的节点不能为数字。
接口编写
通信接口数据标准格式
conde 状态码(200,400等);
message 提示信息(数据返回成功等);
data 返回数据;
以json格式传输数据
Response.php
<?php class Response{ /** * 按JSON方式输出通信数据 * @param integer $code [状态码] * @param string $message [提示信息] * @param array $data [数据] * return string */ public static function json($code,$message='',$data=array()){ if(!is_numeric($code)){ return ''; } $result = array( 'code'=>$code, 'message'=>$message, 'data'=>$data ); echo json_encode($result); exit; } }?>
ceshi.php
<?php require_once('./response.php'); $arr = array( 'id'=>1, 'name'=>'zhansan' ); Response::json('200','success',$arr);?>
以XML格式传输数据
/** * 按XML方式输出通信数据 * @param integer $code [状态码] * @param string $message [提示信息] * @param array $data [数据] * return string */ public static 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'?>"; $xml.="<root>"; $xml.=self::xmlTOEncode($result); $xml.="</root>"; echo $xml; } /** * [xmlTOEncode 数据处理] * @param [array] $data [要处理的数据] * @return [array] [description] */ public static function xmlTOEncode($data) { $xml = $attr=""; foreach($data as $key=>$value) { if(is_numeric($key)){ $attr.="id={$key}"; $key.="item";//防止节点出现数字报错 } $xml.="<{$key}>"; $xml.=is_array($value)?self::xmlTOEncode($value):$value;//递归处理数组 $xml.="</{$key}>"; } return $xml; }
将格式传输数据写活
/** * 按综合方式输出通信数据 * @param integer $code [状态码] * @param string $message [提示信息] * @param array $data [数据] * @param strind $type [传输类型] * return string */ const JSON = "json"; public static function show($code,$message='',$data=array(),$type){ if(!is_numeric($code)){ return ''; } $result = array( 'code'=>$code, 'message'=>$message, 'data'=>$data ); if($type=='json') { self::json($code,$message,$data); exit; }elseif($type=='xml') { self::xmlEncode($code,$message,$data); exit; } }
- 接口的封装
- 接口结果的封装
- Ios 封装sqllite3的接口
- 接口的封装与使用
- 链表接口的封装
- 【链式队列】接口的封装
- redis接口的java封装
- 接口封装
- 使用c++封装com的IEnum接口
- 封装好的一个数据接口
- IShellLink接口的MFC封装类
- c++关于封装、接口的简单理解
- 好用的epoll接口封装
- 读取配置文件csv的接口封装类
- 封装通信接口数据的方法-json
- 封装通信接口数据的方法-xml
- Hibernate4 针对存储过程的接口封装
- CPU的封装和接口形式
- linux备忘录之- wifi网络通讯数据流程(重点80211)
- Medoo 多表联查
- c语言简单实现 扫雷
- Android MVP 架构最简单的例子!
- 记录一个脑残的问题:MFC的CcomboBox无法显示下拉内容
- 接口的封装
- 图片切圆角
- 键入命令:mount /mnt/cdrom 提示:can't find /mnt/cdrom in /etc/fstable or /etc/mtab
- 用css 添加手状样式,鼠标移上去变小手,变小手
- 华为训练题:输入n个整数,输出其中最小的k个
- 编写JavaApplication,求出e=1+1/1!+1/2!+1/3!+···+1/n!···的近似值,要求误差小于0.00001
- 从原理上搞定Base64编码
- tomcat4.0源码调试
- Android PopupMenu 与 PopupWindow(的区别)