一、整体流程
常规处理流程
二、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个切入点的中间件
<?phpnamespace 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 的文件夹上。
<?phpnamespace App\Module\Topd\Controller\Omr;/*** 在Class的注释里面,使用注解的方式定义控制器入口* @Controller("/topd/omr/day")*/class DayController extends BeanCollector{}
五、Logic(逻辑层)
1)统一继承 BeanCollector
2)调用其它Logic时,使用注解 @Inject() 进行单例实例化
<?phpnamespace 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)调用数据时,使用对象实例静态化的调用方式
<?phpnamespace 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
