多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP如何为APP开发接口流程

时间:2018-08-24 17:55:00 [来源]:郑州PHP培训学校

   PHP如何为APP开发接口流程

  做过API的人应该了解,其实开发API比开发WEB更简洁,但可能逻辑更复杂,因为API其实就是数据输出,不用呈现页面,所以也就不存在MVC(API只有M和C),APP接口:是为客户端开发工程师提供数据的,客户端开发工程师通常有两大部分的工作:界面布局、获取数据;获取数据就是从APP接口获取,也被称为通信接口。客户端开发工程师发送请求到APP接口地址,接口文件放在服务器,在服务器处理一些业务逻辑,返回数据,然后再解析数据,填充到客户端,开发完成。
  1、和WEB开发一样,首先需要一些相关的参数,这些参数,都会由客户端传过来,也许是GET也许是POST,这个需要开发团队相互之间约定好,或者制定统一规范。
  2、有了参数,根据应用需求,完成数据处理,例如:任务进度更新、APP内购、一局游戏结束数据提交等等
  3、数据逻辑处理完之后,返回客户端所需要用到的相关数据,例如:任务状态、内购结果、玩家信息等等
  数据怎么返给客户端?
  直接输出的形式,如:JSON、xml、TEXT等等。
  4、客户端获取到你返回的数据后,在客户端本地和用户进行交互。
  实际项目中,我们在开发API应该注意的几个事项(仅供参考):
  1、单文件实现多接口的形式有很多种,例如:if..elseif..或switch或动态方法(也就是TP的这种访问函数体的形式)
  2、对于数据的输出最好用json,json具有相当强大的跨平台性,市场上各大主流编程语言都支持json解析,json正在逐步取代xml,成为网络数据的通用格式
  3、接口安全,一定要增加接口验证。例如,客户端和服务端针对不同接口统一做好加密方式,服务端在对于每次接口需要都要进行验证。以保证防止接口被恶意刷新或黑客恶意调用,尤其是大型商业应用。
  4、对于线上的API必须保证所有接口正常且关闭所有的错误信息=>error_reporting(0),在输出JSON时,不能有任何其它输出,否则,客户端将解析数据失败,直接Crash!
  5、开发API和WEB有一定的区别,如果是WEB的话,可能代码出错了,不会导致特别严重的错误,也许只是导致数据写入和查询失败,也许导致WEB的某个部分错位或乱码。但如果是API,直接Crash!
  6、做接口开发,不建议使用框架开发,原因概括起来有两点(其实我有点冒风险的,本人也是TPer一枚,毕竟这是TP的官网):
  1)客户端一般对服务端的响应速度有极高要求,因此,使用最原生态的PHP完成接口开发,是最高效的,假如用到了框架,还需要加载各种不需要多余的文件,就好比夏天穿了件冬天的衣服。试想,你在玩手机的时候,使用一个应用随便一个操作,等半天才有动静,你受的了吗?
  2)就是上面第4点提到的,框架对于WEB开发,是件很幸福的事,但对于API而言,你实在不敢想象它会给你出什么岔子!最后你将痛苦不堪~~因为很多框架都是为WEB诞生的(我也很期待有一天能看到专门为开发API而生的框架或者扩展)
  这个也有人纠结,接口效率与稳定性,还得看编码的人,有的人可能写的还不如框架跑的快,也有人觉得用框架没什么问题,这里只是建议,关键看自己的实际情况,同时建议代码上线前压测一下
  说到这,不得不说扯一下,腾讯微博淘宝等开放平台。其实那些开放平台,所谓的开放,就是给你提供一个这样的接口,你根据他们提供的技术文档,按他们制定的格式和要求,调它们提供的接口文件(一般都是返回JSON或者xml),你就可以获取到他们的相关信息,例如:QQ用户基本信息、淘宝店铺、商品消息等等。然后在根据这些消息,在你的应用里完成交互。
  其实,ajax也是调用API的一种体现形式,你觉得呢?
  PHP软件基本的语法有哪些
  PHP的语法基本上是由C或C++演变而来,因此对于学过C,C++的朋友来说还是比较简单的,在这里我只简单的介绍一下.
  1.基本语法
  PHP是一种web脚本语言,因此它可以和html代码结合使用,不过通常我们为了代码维护的方 便,一般会把PHP和html代码相分离. PHP的写法有很多种,不过最常用的也是建议用的是下面这种写法: <?php echo "Hello,World!\n": ?> 采用<?php作为PHP代码的开始,然后以?>作为结束. PHP不仅可以在web端执行,它也支持终端执行,甚至在linux下可以象shell脚本一样执行, 此时只需要在程序文件最开始添加:#/usr/bin/php -q (/usr/bin/php为php安装程序 位置),然后给文件添加可执行权限: chmod +x filename,文件的后缀.php在此种情况下 可以不写,执行的时候和执行shell脚本一样:./filename就可以了,因此在对效率要求不高 的情况下,我们也可以使用php来写一些脚本命令.
  2.类型
  PHP支持8种基本类型,PHP为了确保代码的易读性,还添加了一些伪类型. 基本类型包括:布尔型(boolean), interger(整型), float(浮点型,也称为double), string(字符串型),前面这四种是标量类型, array(数组),object(对象),这两种是符 合类型, resource(资源), NULL(NULL),最后这两种是特殊类型. PHP的伪类型有: mixed(可在PHP数组函数中经常看到的返回值类型), number, callback(回调函数),以及伪变量$...
  3.变量
  PHP变量用一个美元符号($)加变量名组成,其变量定义遵从正则表达式: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' PHP允许未定义变量直接使用(PHP会自动定义),不过通常建议引用前先进行初始化,保证程序 安全. PHP定义了大量的预定义变量,在本文下面我将会介绍到PHP的预定义变量. PHP还有一种独有的可变变量,即一个变量的变量名可以动态的设置和使用.在某些特殊情况下, 这种方式是很方便和适用的.更多妙用大家可以自己体会一下,比如: <?php /*$a的内容是"hello",并且$hello的内容是"world"*/ $a = 'hello'; $$a = 'world'; ?> 注意: 1.在PHP中是区分大小写的。 2.$this在PHP中是一个特殊变量,它不允许被赋值。
  4.常量
  PHP常量定义比较简单,直接使用define()函数定义,常量的名称定义需遵循下面的正则表达式:    [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* 常量定义格式如下: <?php define("PI","3.1415926"); ?> PHP还有一种特殊的常量:魔术常量,它们的值会随着在代码中的位置改变而改变,下面简要说明一下 PHP的几个"魔术常量": __LINE__     文件中的当前行号. __FILE__    文件的完整路径和文件名. __DIR__        文件所在的目录. __FUNCTION    函数名称(注意:PHP 5起返回该函数定义时的名称,区分大小写,PHP4时该值总为小写). __CLASS__    类名称(注意同上) __METHOD__    类的方法名(PHP 5.0.0新加,返回该方法被定义时的名字) __NAMESPACE__ 当前命名空间的名称(不要问我,我暂时也还没通过,不过我想应该是类似java的package 和c#的namespace吧)
  5.表达式
  表达式是任何一种语言的基础,只要接触过编程的人都知道,PHP表达式基本类似C,C++.我简要说一下需要 注意的几点(对其他语言也适用): 1.注意"="和"=="的区分,"="为赋值,"=="为判断,经常会有人将"="和"=="用混了,然后在调试程序时怎 么也发现不了问题,这个即便是编程老手也可能会犯的错误,大家一定要注意了. 2.PHP中也存在三目运算符,学过C语言的人都知道. 其他我就不多说了,有问题可以联系我进行交流.
  6.运算符
  PHP的运算符与其他语言没什么太大区别,这里就不再多说了,唯一需要注意的就是不要把各运算符的 优先级搞错了.
  7.控制结构
  PHP的程序控制结构与其他语言相同,就是些条件判断,wile/for循环,分支等内容,它还有几个自己特有的 包含函数,用于保护其他的函数文件,类似C语言中的include. PHP的包含函数有require,include,require_once,include_once 具体它们之间的区别,可参考我前面发的一篇文章: 一份超级全面的PHP面试题及答案
  8.函数
  PHP函数基本上与其他语言没有太大差别,这里只简要介绍一下其独有特性. 1.函数中的函数 <?php function foo() { function bar() { echo "I don't exist until foo() is called.\n"; } } /*现在不能调bar()函数,因为其还不存在*/ foo(); /*现在可以调用bar()函数了,因为foo()函数执行使得bar()函数变为已定义函数*/ bar(); 2.PHP函数的参数支持两种传递方式:按值传递参数(默认)和通过引用传递参数,具体 使用类似C语言,大家有兴趣可稍后在网上查找学习一下. 3.PHP函数不能返回多个值,不过可以通过返回数组的形式来得到同样的效果;而且PHP函数也可以返回 一个引用,此时必须在函数声明和指定返回值给一个变量时都使用引用操作符号&. 4.PHP还支持可变函数的概念,这个在其他部分语言中也有实现,实际上就是通常用的回调函数,即如果 在一个变量名后有圆括号,PHP将寻找与变量值同名的函数,并尝试执行它.具体有什么用处,大家可以仔 细考虑一下.不过变量函数不能用于语言结构,如echo(),print(),empty(),include()等类似的语 句. 5.PHP能够如此流行,与它拥有大量的函数库是有关系的,正因为有了庞大的函数库做为支撑,才有了它 今天发展的局面,不过默认PHP安装尽包含了一些常用的核心函数库,其他函数库引用时需额外安装其扩 展模块,如使用DES加解密函数就需要安装mcrypt扩展模块,使用image函数就需要添加GD的支持.调用 phpinfo()或get_loaded_extensions()就可以看到PHP加载了那些扩展库,在终端的话直接输入:  php -m就可以查看其加载的扩展函数库列表了. 6.PHP还支持匿名函数(Anonymous functions),也叫闭包函数(closures),允许临时创建一个没有 指定名称的函数,最常用做回调函数的参数,这个一般情况下用的比较少,你可以在这里了解到关于匿名 函数的说明: http://docs.php.net/manual/zh/functions.anonymous.php 注意: PHP不支持函数重载,也不可能取消定义或重定义已声明的函数,否则在执行时就会出错. PHP函数应该说是PHP的重中之重了,学习PHP,主要就是学习其各类函数的使用说明,只有掌握了更多的 函数应用,我们对PHP的理解才能更加深入,因此一定要好好学习PHP的函数.
  9.类与对象
  在php5之前虽然也能写PHP类,但那并不是完整意义上的类,在PHP5中引入了新的对象模型 (Object Model), 并完全重写了PHP处理对象的方式,使其性能更佳,功能更强. PHP5中的新特性包括: 可见性,抽象类和final类,类方法,魔术方法,接口,对象克隆和类型提示,如果你学过java 或其他面向对象语言的话,其中某些特性你一定不陌生. 在PHP5当中对象是按引用传递的,即每个包含对象的变量都持有对象的引用,而不是整个对象 的拷贝. 由于PHP的类和对象的内容众多,这里就简单介绍一下,在以后的日子里会有更加详细的说明.
  10.命名空间(http://docs.php.net/manual/zh/language.namespaces.php)
  命名空间我接触的也不多,我大概从概念上介绍一下. 从广义上讲,命名空间实际上是一种封装文件函数的方法,在很多的地方我们都能看到这种抽象 概念,如操作系统的目录,对于目录中的文件来说,目录就扮演了命名空间的角色,在foo1和foo2 目录下分别都存在一个foo.txt文件且内容完全,但因为它们在不同的命名空间下,因此他们都可 以正常存在,但你肯定不能把他们放到一个目录下共存,这种原理应用到程序设计领域就是命名空 间的概念.在java中的package和c#中的namespace实际上也是这种概念.
  11.异常处理
  异常处理是PHP参考C++,Java在其后期版本中引入的概念,PHP的异常处理函数只有在面向对象的 扩展中才会使用,其内部函数还是注意使用错误报告.
  12.预定义变量
  PHP提供了大量的预定义变量,供我们调用,使用它们将会很方便我们在程序之间的数据传输和共享 ,下面简要介绍一下各个预定义变量. $GLOBALS    引用全局作用域中可用的全部变量 $_SERVER    服务器和执行环境信息 $_GET        HTTP GET变量 $_POST        HTTP POST变量 $_FILES        HTTP文件上传变量 $_REQUEST    HTTP Request变量 $_SESSION    Session变量 $_ENV        环境变量 $_COOKIE    HTTP Cookies $php_errormsg    前一个错误信息 $HTTP_RAW_POST_DATA    原生POST数据 $http_response_header    HTTP响应头 $argc    传递给脚本的参数数目 $argv    传递给脚本的参数数组
  PHP的基本语言参考简单先介绍到这里,其实还有一些暂时未提到,如预定义异常,引用的解释及预定义接口的概念,这些相对初学者来说,其实可以先不用掌握,等逐步的学习一段时间后再慢慢接触,否则一开始接触太深入的内容会打消你的积极性的,因此我们可以从简单入手,由易到难,慢慢来.

上一篇:php单一入口模式详细讲解

下一篇:概论为什么PHP全局变量不能生效