清晨的上班路上,看到一辆公交车撞倒了一辆电动车,一位小学生倒在路上,腿部在流血,大人在嘶吼,生活都不容易,孩子都是家里的宝,一切平安顺心才是最重要的。
接口
我们提供一个 URL 地址,让前端提交并获取后端参数,利用 Thinkphp 很好实现,而且实现的过程非常迅速,搭建该项目的方式也是相当的简单粗暴,没有什么难度,这个时候就体会到了 PHP 项目的魅力,就是开发非常的迅速。
项目部署
首先我使用的集成环境,方便在 windows 下部署 apache 服务器,然后下载好了 thinkphp 框架和 core 核心,将 XAMPP 启动后,在 htdocs 目录下新建一个文件夹,我们起名: upmovie ,正常情况下是这样,但是这次项目,我还使用 git 来管理,所以我自己的使用过程是,先在 sourceTree (git的图形管理工具)新建了个仓库,在 htdocs 目录下起名叫 upmovie
删除原项目里的 index 文件夹,新建 api 文件夹在里面创建 controller、model、service、validate 四个文件夹。
模型
这里不得不提一个模型,功能非常强大,大概就是你给你的 class 文件起个名字与文件名保持一致,当然支持下划线与驼峰命名转换,然后继承 thinkphp 的基础类 model 就可以直接操作数据库,而不必写 SQL ,完全把 SQL 当成一个数组或者是一个类来操作,极其方便迅速。
为了扩展性,给 modely 创建一个基类 BaseModel 继承 think\model ,然后我自己创建的模型都继承这个基类。例如我的数据库名称为 upm_movie 那么我的第一个模型的类名叫 UpmMovie 。
<?php
namespace app\api\model;
class UpmMovie extends BaseModel
{
protected $hidden=['TYPE_LINK','LANG','UPDATE_TIME','CREATE_TIME'];
public static function getMovieByID($id){
$movie=self::with(['lang','type','type.typeLink'])->find($id);
return $movie;
}
public static function getMovieByRange(){
$movies=self::limit(0,4)->select();
return $movies;
}
public function lang(){
return $this->belongsTo('upm_lang','LANG','ID');
}
public function type(){
return $this->hasMany('upm_type_link','MOVIE_ID','ID');
}
}
hasOne:有一个,加上主谓语应该是 ,A 有一个 B
hasMany:有很多,A 有很多 B
belongsTo:属于, A 属于 B
下面这个是关联表,MOVIE_ID 是电影表主键,TYPE_ID 是类型表主键
所以 upm_movie 表与 upm_lang 表是多对一的关系,我使用 belongsTo ,意思是一条语言类型只“属于”一个电影。
同理,在 upm_type_link 表里,一个电影可以有多个类型,所以是 hasMany,意思 是多个类型“对应”一个电影。
于是第一个接口就这样完成了,一个模型加一个控制类即可:
class Movie
{
public function getMovie($id){
$movie=UpmMovie::getMovieByID($id);
return $movie;
}
public function getMoviesByRange(){
$movies=UpmMovie::getMovieByRange();
return $movies;
}
}
路由
tp5里有一个路由的概念,即实际访问控制的 URL 用另外一个地址来代替,即为路由。这里采用的方式是注册的方式,比较清晰。
数组的方式都比较混乱
注册的方式比较清晰
总结
这样我们就完成了一个接口,虽然比较简单,但是也算是可以看到结果了,后续可以继续完成验证器,完善返回值等等。
用 PHP 开发的特点就是快,组件项目,完成接口都非常的迅速,很省时,不愧是服务器端强大的解析语言,咋加上框架的利用,开发效率和整洁程度十分的高效。
转载:https://blog.csdn.net/Caeser110/article/details/101048567