一、整体流程
常规处理流程
二、AJAX请求
【VUE】示例:
使用GET的方式请求接口 http://dnet.com/topd/omr/day,并传入参数 days=12,异步等待结构返回,并把返回结果赋值给指定变量
let that = this;
http_get('/topd/omr/day', {days:12}, function (res) {
that.lists = res;
});
注:无须在方法中使用域名
在Dnet框架中已经封闭了数据请求方法:
方法名 | HTTP协议 | 参数 |
---|---|---|
http_get | GET | 第一参数:接口地址 第二参数:参数数组(一维) 第三参数:回调方法 第四参数:回调数据类型,默认是 json |
http_post | POST | 第一参数:接口地址 第二参数:参数数组(一维) 第三参数:回调方法 第四参数:回调数据类型,默认是 json |
三、中间件
【绿色背景】为中间件切入点,支持4个点切入。
在Controller上使用注解 @Controller() 植入中间件,下面例子共值入4个切入点的中间件
<?php
namespace App\Module\Topd\Controller\Omr;
use App\Middleware\ApiResultFormat;
use App\Middleware\LoginMiddleware;
use .....
/**
* 日统计入口
* Class DayController
* @Controller("/topd/omr/day")
* @Middleware(LoginMiddleware::class)
* @Middleware(ApiResultFormat::class)
*/
class DayController extends BeanCollector
{
/**
* @Inject()
* @var SumLogic
*/
private $sumLogic;
/**
* 合计数据
* @param Argument $argument
* @Middleware(SumBeforeMiddleware::class)
* @Middleware(SumAfterMiddleware::class)
* @return array
*/
public function sum(Argument $argument)
{
return [];
}
}
4个中间件:
中间件名 | 作用说明 | 参数名称 | 参数说明 |
---|---|---|---|
LoginMiddleware | 本例: 登录中间件,限制此类为需要登录校验 |
Argument | 当前请求参数 (可被中间件改写) |
ApiResultFormat | 本例: API接口结果二次加工 |
Argument | 当前请求参数 |
Result | 处理结果(引用类型) | ||
SumBeforeMiddleware | 本例: 调用此方法前的执行 |
Argument | 当前请求参数 (可被中间件改写) |
SumAfterMiddleware | 本例: 调用此方法后的执行 |
Argument | 当前请求参数 |
Result | 处理结果(引用类型) |
注:1)Class后处理的中间件获取到的Result是经过Method方法后处理中间件的处理结果。
2)一般情况没有用到Method方法上的中间件
四、Controller(控制器)
任何PHP文件都可以被定义为Controller文件,核心是在Class类使用注解 @Controller() 来定义是控制器文件。
注:Dnet开发工程,为了方便管理与认识,统一把控制器文件放在名为 Controller 的文件夹上。
<?php
namespace App\Module\Topd\Controller\Omr;
/**
* 在Class的注释里面,使用注解的方式定义控制器入口
* @Controller("/topd/omr/day")
*/
class DayController extends BeanCollector
{
}
五、Logic(逻辑层)
1)统一继承 BeanCollector
2)调用其它Logic时,使用注解 @Inject() 进行单例实例化
<?php
namespace App\Module\Topd\Logic\Omr;
class DayLogic extends BeanCollector
{
/**
* @Inject()
* @var SumLogic
*/
private $sumLogic;
/**
* 获取XXX列表
* @return array
*/
public function getList(...)
{
$list = $this->sumLogic->getTotal(...);
}
}
3)调用数据时,使用对象实例静态化的调用方式
<?php
namespace App\Module\Topd\Logic\Omr;
class DayLogic extends BeanCollector
{
/**
* 获取XXX列表
* @return array
*/
public function getList(...)
{
//本例:获取列表数据
$list = OmrDayModel::M()->getList();
//本例:更新数据
OmrDayModel::M()->update([...]);
//本例:删除数据
OmrDayModel::M()->delete([...]);
}
}
六、Model(数据实体层)
1)统一继承 MySqlModel