欢迎您的到来!   设置首页   收藏
你的位置:主页 > 123tk图库大全 >

《细说PHP》第四版 样章 第23章 自定义PHP接口规范 9

发布时间: 2019-09-10? 来源:本站原创 作者:admin

  程序框架其实就是一个半成品项目,在应用框架时,核心的服务程序只应用,不需要改动。当然如果有必要,也可以根据项目的需要对框架进行二次开发。本节内容主要基于我们的框架,完成对WebAPI的访问交互。例如,现在有这样一个简单需求,在客户端PHP程序中,需要通过我们自定义的API对远端数据库中的表user(使用本章前面介绍过的表user),进行增、删、改、查等操作。

  首先,我们需要在服务器中创建一个user表的操作模型类,通过统一的操作模型对表进行管理。当然,对表操作的数据访问模型可以编写得很“智能”,本例只是为了完成效果,用最简单的方法实现对表user的操作。在项目的根目录创建一个“models”目录,对每个表的操作都在这个目录中创建一个单独的操作类。根据需求只需要对一个表user进行操作,所以只需要在该目录下创建一个user.php的文件,并在文件中声明一个User类。另外,对每个数据表操作的模型类,都需要先连接数据库,所以可以先声明一个父类,把所有共性的表操作都在这个父类中声明。本例只将数据库的连接操作看作共性问题,放在根目录model.php文件声明的Model类中,代码如下所示:

  Model类作为所有数据模型的父类,通过connect()方法加载配置文件config.php,根据数据库配置信息连接到数据库,可以让所有子类调用该方法,并完成对数据库的连接操作。我们在models目录中创建的user.php文件,声明的User类继承了Model类,代码如下所示:

  在User类中只声明一些对表user进行增、删、改、查的操作方法,如果需要对其他表进行同样的操作,可以再声明一些同样的类文件。User类中的这些方法,可以在控制器中通过创建User类的对象直接进行访问。同样,每个业务操作流程也需要声明一个独立的控制器文件。控制器和其中的操作方法,是通过我们定义的框架,在路由表中和用户的操作请求绑定的。根据用户不同的操作请求,通过路由映射到控制器中对应的方法。按本例的需求,创建一个目录“controllers”,并在该目录下声明一个usercontroller.php文件,并在文件中声明一个UserController类,代码如下所示:

  如果有其他的业务需求,可以按本类的格式,再继续添加新的控制器。在本类中声明一些通用操作方法,通过创建数据操作模型User类对象,对表user进行操作,将运行结果再通过Response类返给客户端。

  有了控制器,下一步就需要编辑api.php文件中的路由表,将我们声明的接口发布出去。注册路由表信息如下所示:

  如果整个项目文件已经上传到Web根目录下,按RESTful API的要求,需要一个独立的域名空间。可以在本机进行简单测试,通过修改Windows系统下的hosts文件,添加一条记录,VOA听力中SE和ST分别是什么意思。将域名定到本机“127.0.0.1”。打开“C:/Windows/System32/drivers/etc/hosts”文件,在最后一行加一条记录,如下所示:

  添加完成后直接保存即可生效,当然只能在本机测试使用。可以通过域名提供商购买,并将域名指向自己的服务器地址,也可以在Linux下通过配置DNS服务实现。现在访问API的URL为:

  按RESTful API的规范,还需要隐藏主入口文件index.php。这可以通过Web服务器Apache提供的URL rewrite扩展模块实现。在index.php文件所在的同级目录下(本例在Web文档根目录下),创建 “.htaccess”文件,添加几条Apache URL重写指令来实现,文件“.htaccess”的内容如下所示:

  文件编辑完成后不用重新启动Web服务器即可生效,如果主入口文件不是放在Web服务器的根目录下的,只需要在第三条index.php前加上所在的路径即可。现在访问API的URL为:

  到现在自定义的简单API已经开发完成,如果让客户端访问,还需要提供详细的API文档。可以通过平台注册一个账号来管理文档,我们通过简单的表格编写部分自己定义的API文档,如表23-6所示。


Copyright 2017-2023 http://www.s12dz.com All Rights Reserved.