PHP_TP5框架开发后端接口(代码编写思路)

栏目: PHP · 发布时间: 6年前

内容简介:这半个月断断续续在学习用PHP的ThinkPHP框架开发后端API。现在总结记录一下开发一个接口需要做好哪些事,以此提高开发效率,并且也有不错的扩展性。基本是这么一个流程,略过环境搭建:梳理好有哪些接口后,就开始设计数据表:

这半个月断断续续在学习用 PHP 的ThinkPHP框架开发后端API。现在总结记录一下开发一个接口需要做好哪些事,以此提高开发效率,并且也有不错的扩展性。

一、流程概要

基本是这么一个流程,略过环境搭建:

  1. 整理清楚有哪些接口
  2. 设计数据表
    • 初步梳理是一对一,一对多,还是多对多
  3. 编写验证器
  4. 编写全局异常类(AOP思想)
  5. 定义路由路径
  6. 建立控制器类
  7. 建立模型类
    • 用ORM,所以建立和数据表对应的模型类
  8. 控制器调用模型,模型调用数据库,完成接口编写

二、具体说明

梳理好有哪些接口后,就开始设计数据表:

PHP_TP5框架开发后端接口(代码编写思路)

数据表会随着代码的编写做些调整和改变。

值得注意的一点,当有两张表之间的关系是多对多时,记得设计一张中间表存放两张表各自的id。

设计好数据表后,开始编写一些 工具 类,有助于提高编写业务代码时的效率。

首先是验证器(validate)。

TP5框架自带验证器类,我们要做的则是继承这个验证器类,然后根据具体的接口做扩展即可。

创建一个验证器基类,把通用的方法放在里面:

PHP_TP5框架开发后端接口(代码编写思路)

goCheck()方法是所有具体验证器都会调用的方法,各个具体验证器只是会重写一些验证规则和验证返回信息而已。

在goCheck()方法里,实例化了Request类。这样做的目的是获取API被调用时,调用方传递的参数。获取到参数后,自然就是对这些参数进行验证了。check()方法会调用各个具体验证器里设置的验证规则函数进行检测。

然后是全局异常类(global exception)。

同样的,TP5框架自带了一个异常类,我们就创建一个异常基类继承它。

PHP_TP5框架开发后端接口(代码编写思路)

随后需要做的则是根据具体的接口重写HTTP状态码,错误消息和错误码即可。

至于错误码的定义,则是自己设计一套规范。

搭建好验证器和全局异常类后,我们只需要在每个接口的函数里面调用他们就行了:

PHP_TP5框架开发后端接口(代码编写思路)

好,至此一些基础的东西就搭建好了,下面开始编写接口代码。

首先定义路由路径:

PHP_TP5框架开发后端接口(代码编写思路)

在route.php里,引入Route类,定义路径即可。路径里的变量用:号+变量名表示,路径里的变量由路径末尾指定的函数接收,这个函数定义在控制器相对应的类里面。

比如id这个变量:

PHP_TP5框架开发后端接口(代码编写思路)

如上图,在控制器里,当拿到调用方通过路由路径传过来的参数后,我们就调用模型,把参数传过去,模型处理具体的数据库调用。

这里也是一个需要注意的点,控制器尽量只做连接的事情,不做具体的操作。

然后,在建立了控制器后,顺理成章,也需要建立对应的模型。

TP5同样自带了Model类,然后我们也定义自己的模型基类,当然也是继承TP5的模型类:

PHP_TP5框架开发后端接口(代码编写思路)

模型基类自然也是定义较为通用的方法。比如上图的例子里,定义了一个返回图片前缀链接的方法,不同的接口但又跟图片调用有关的话,就会用到这个方法来拼接图片URL。

这里也有个注意的点。当我们需要创建全局的变量时,可以在application目录下创建extra目录文件,然后创建setting.php文件,在里面返回一个关联数组即可:

PHP_TP5框架开发后端接口(代码编写思路)

随后的调用如上图模型基类里的prefixImgUrl方法里展示的一样,config函数,参数传入文件名加关联数组的key值,这样就可以获取到了:

PHP_TP5框架开发后端接口(代码编写思路)

回到模型上来,每个接口会有自己的模型类,这个模型类对应一张数据表,比如:

PHP_TP5框架开发后端接口(代码编写思路)

Banner模型类由于是通过模型基类继承了TP5的Model类,我们需要做的就是重写一些属性,来适应这个具体的接口,比如重写$hidden属性,定义这个接口返回的哪些字段我们是要隐藏的。

然后则是ORM的重点之一,调用数据表所对应的模型类。比如items方法里,通过hasMany()这个方法确定了Banner模型和BannerItem模型的关系。然后在getBannerById()方法里,调用了ORM用来操作数据的方法,这是对原生操作数据库语句的封装,然后ORM会返回模型对象,这个对象除了带有数据库数据外,还会带有一些属性和方法,用来操作数据。这是ORM对比原生 SQL 语句的一个优势。

最后,控制器调用模型的getBannerById()方法,获取到了数据,再作为接口的返回值传递给接口调用者。这样就完成了一次接口的编写。

三、总结

至此做了一个简要的后端API开发流程记录。其中还有很多细节没有提到,只是简略的描述了一个过程,不过这也不是这次记录的主要目的。这次的目的还是对这一周多学习的一个记录。

通过这次学习后端API开发,更加巩固了我对面向对象编程里思想的理解和运用。

通过继承和重写,可以把代码写得更干净简洁。

类,实例,属性,方法,怎么看待他们,然后操作他们,通过这次学习又加深了很多认识。


以上所述就是小编给大家介绍的《PHP_TP5框架开发后端接口(代码编写思路)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

产品增长力

产品增长力

李阳 / 机械工业出版社 / 2018-4-1 / 59

本书由京东资深数据产品经理撰写,重新定义了数据与产品、业务的关系,从数据分析方法、数据价值挖掘、数据结果倒逼业务优化3个层次,以及设计、运营和优化3个维度,为产品增长提供了科学的依据和方法论,得到了PMCaff创始人阿德、GrowingIO创始人&CEO张溪梦、增长官研究院创始人范冰、腾讯高级产品经理刘涵宇等专家的高度评价。 全书内容以理论为主线,以实操为目标,萃取技术实操与管理思维中的精华......一起来看看 《产品增长力》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具