一、整体流程

常规处理流程
image.png

二、AJAX请求

【VUE】示例:
使用GET的方式请求接口 http://dnet.com/topd/omr/day,并传入参数 days=12,异步等待结构返回,并把返回结果赋值给指定变量

  1. let that = this;
  2. http_get('/topd/omr/day', {days:12}, function (res) {
  3. that.lists = res;
  4. });

注:无须在方法中使用域名

在Dnet框架中已经封闭了数据请求方法:

方法名 HTTP协议 参数
http_get GET 第一参数:接口地址
第二参数:参数数组(一维)
第三参数:回调方法
第四参数:回调数据类型,默认是 json
http_post POST 第一参数:接口地址
第二参数:参数数组(一维)
第三参数:回调方法
第四参数:回调数据类型,默认是 json

三、中间件

【绿色背景】为中间件切入点,支持4个点切入。
image.png

在Controller上使用注解 @Controller() 植入中间件,下面例子共值入4个切入点的中间件

  1. <?php
  2. namespace App\Module\Topd\Controller\Omr;
  3. use App\Middleware\ApiResultFormat;
  4. use App\Middleware\LoginMiddleware;
  5. use .....
  6. /**
  7. * 日统计入口
  8. * Class DayController
  9. * @Controller("/topd/omr/day")
  10. * @Middleware(LoginMiddleware::class)
  11. * @Middleware(ApiResultFormat::class)
  12. */
  13. class DayController extends BeanCollector
  14. {
  15. /**
  16. * @Inject()
  17. * @var SumLogic
  18. */
  19. private $sumLogic;
  20. /**
  21. * 合计数据
  22. * @param Argument $argument
  23. * @Middleware(SumBeforeMiddleware::class)
  24. * @Middleware(SumAfterMiddleware::class)
  25. * @return array
  26. */
  27. public function sum(Argument $argument)
  28. {
  29. return [];
  30. }
  31. }

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 的文件夹上。

  1. <?php
  2. namespace App\Module\Topd\Controller\Omr;
  3. /**
  4. * 在Class的注释里面,使用注解的方式定义控制器入口
  5. * @Controller("/topd/omr/day")
  6. */
  7. class DayController extends BeanCollector
  8. {
  9. }

五、Logic(逻辑层)

1)统一继承 BeanCollector
2)调用其它Logic时,使用注解 @Inject() 进行单例实例化

  1. <?php
  2. namespace App\Module\Topd\Logic\Omr;
  3. class DayLogic extends BeanCollector
  4. {
  5. /**
  6. * @Inject()
  7. * @var SumLogic
  8. */
  9. private $sumLogic;
  10. /**
  11. * 获取XXX列表
  12. * @return array
  13. */
  14. public function getList(...)
  15. {
  16. $list = $this->sumLogic->getTotal(...);
  17. }
  18. }

3)调用数据时,使用对象实例静态化的调用方式

  1. <?php
  2. namespace App\Module\Topd\Logic\Omr;
  3. class DayLogic extends BeanCollector
  4. {
  5. /**
  6. * 获取XXX列表
  7. * @return array
  8. */
  9. public function getList(...)
  10. {
  11. //本例:获取列表数据
  12. $list = OmrDayModel::M()->getList();
  13. //本例:更新数据
  14. OmrDayModel::M()->update([...]);
  15. //本例:删除数据
  16. OmrDayModel::M()->delete([...]);
  17. }
  18. }

六、Model(数据实体层)

1)统一继承 MySqlModel