Thinkphp5.1 的多级控制器和分层控制器
1.什么是多级控制器?如何进行定义使用?
根据thinkphp的MVC架构设计,通常情况下我们访问的控制器文件放在模块下的controller文件夹下,如:application\service\controller\start.php。我们可以继续在controller文件夹下创建文件夹来实现多级控制器,比如api代码管理,实现版本迭代更新避免直接覆盖,新旧接口混乱的情况。
1.1 定义分级控制器:
新建v1版本商品控制器文件:app\api\controller\v1\Goods.php
注意命名空间是:app\api\controller\v1
<?php
namespace app\api\controller\v1;
class Goods
{
public function listAll()
{
return json(['code'=>0,'msg'=>'success','data'=>'商品列表']);
}
}
前端访问接口就变成了:your_domain/api/v1.Goods/listAll
1.2 定义多级控制器路由:
但是这种地址太长也不利于管理,结合路由文件修改接口地址,在route文件夹下新增路由文件api.php,内容如下:
<?php
use think\facade\Route;
Route::group('api/v1', function() {
Route::get('goodsList', '@api/v1/Goods/listAll');//路由到操作方法
});
或者
<?php
use think\facade\Route;
Route::group('api/v1', function() {
Route::get('goodsList', 'api/v1.Goods/listAll');//路由到模块/控制器/操作
});
前端访问接口就变成了:your_domain/api/v1/goodsList
1.3 多级控制器应用场景:
在项目上线后,如果需要对接口进行迭代升级,还要兼容使用v1版本接口,则可以新建v2版本的控制器,重复以上步骤:新建v2版本商品控制器文件:app\api\controller\v2\Goods.php 省略。。。。
2.分层控制器:
将一些公用的事件业务逻辑抽离出来单独放置一层,以控制器的方式定义出来,就是tp5中的分层控制器。
网友评论