架构
请求流程
HTTP请求流程
对于一个HTTP应用来说,从用户发起请求到响应输出结束,大致的标准请求流程如下:
-
加载路由基类
framework/router.class.php继承路由框架类framework/base/router.class.php -
加载控制器基类
framework/control.class.php继承控制器框架类framework/base/control.class.php -
加载模型基类
framework/model.class.php继承模型框架类framework/base/model.class.php -
加载助手基类
framework/helper.class.php继承助手框架类framework/base/helper.class.php -
实例化应用对象实例(路由框架类实例)
- 实例化全局配置对象并加载主配置文件初始化全局配置对象
- 加载前端工具类
- 加载过滤器工具类
- 加载数据对象工具类
- 加载移动端检测工具类
- 设置 Cookie 安全
- 设置 Debug 模式
- 设置自定义的错误处理函数
- 注册在关闭时执行的函数
- 设置时区
- 开启 Session
- 设置数据库句柄
- 设置客户端语言
- 设置界面类型
- 设置客户端的设备类型
- 若启用多语言,加载语言项
- 若启用多主题,设置客户端主题
-
加载 common 模块
-
设置 moduleName 为 common
-
设置 common 模块的 model 文件,如果存在 model 扩展,合并之
-
实例化 common 模块 model
- model 全局变量赋值类属性
- 加载 common 模块语言项
- 加载 dao 对象并赋值
$this->dao - 设置全局超级变量
- 加载 common 模块 Tao 对象(类似模型层的逻辑服务层)
-
设置 header 信息
-
设置
$this->app->company公司信息并存入session -
设置
$this->app->user用户信息并存入session -
设置
$this->config->openedApproval工作流审批配置 -
从数据库
zento_config加载系统和用户配置 -
设置时区
-
从数据库
zentao_lang加载用户自定义语言项并赋值$this->lang->db->custom -
检查 IP 白名单
-
加载 company 模块语言项
-
-
设置 mobile 页面类型 mhtml
-
设置 card 页面类型 xhtml
-
请求解析 & 设置路由(模块、控制器、方法)
-
实例化控制器(myControl若存在则优先实例化)
-
登录检测 & 权限验证
-
检测当前页面是否在 iframe 中
-
调用控制器 -> 方法
-
输出响应
-
执行已注册的关闭时执行函数