boaPHP开发手册v5.5

逻辑结构

一次完整的请求执行流程如下:


入口
 │
总控
 │
 ├─初始化:系统配置
 │     ├─错误捕获
 │     ├─自动加载
 │     ├─跨域请求[CORS]检查
 │     ├─系统常量
 │     ├─错误输出
 │     ├─环境配置
 │     └─初始化构建(首次)
 │
 ├─触发事件:init监听器
 ├─消息设置:系统消息输出类型
 │
路由
 │
模块
 │
 ├─初始化:模块配置
 ├─触发事件:module监听器
 │
控制器
 │
 ├─初始化:请求类
 ├─初始化:视图类
 ├─初始化:公用类库
 ├─触发事件:controller监听器
 ├─请求变量映射
 │
动作
 │
 ├─跨站请求[CSRF]检查
 ├─请求变量自动验证
 ├─用户业务  <─────────┐
 │                   模型(数据供给) <── 数据库、缓存等
视图  <────────────────┘
 │
输出/返回
 │
 ├─触发事件:action监听器
 │
完成
 ├─记录日志
 └─生成HTML
	

程序中的所有操作均由总控(boa静态类)统一调度

执行优先级

如何提升用户代码的执行优先级?

  • 监听器:写在监听器中的代码会在系统各个执行环节中运行。使用前先自定义监听器替代系统监听器,具体参看 事件配置
  • 公用库:写在common公用库(lirary目录中) __construct() 中代码会在各用户控制器之前执行
  • 控制器:写在用户控制器 __construct() 中代码会在各动作之前执行

常用来放置用户登录检测、权限验证、系统配置等,不必在每个动作中写一遍