禅道PHP - 架构

119 阅读2分钟

架构

请求流程

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 中

  • 调用控制器 -> 方法

  • 输出响应

  • 执行已注册的关闭时执行函数