🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 生命周期 * * * * * 此处讲解的是OneBase的生命周期,若对TP5生命周期不了解请先阅读TP5文档。 ### 1、入口文件 用户发起请求会经过应用的入口文件,通常在public目录下。 入口文件主要做3件事情,初始化框架常量,绑定请求模块,加载引导文件。 OneBase推荐每个对外访问的模块一个入口文件,当然若有需要也可以使用同一个入口文件。 ### 2、系统初始化行为 执行行为定义文件 app/tags.php 下面将依次执行系统行为文件 InitBase.php 进行应用初始化,InitHook.php 进行钩子插件初始化,AppBegin.php 进行开始信息记录。 ### 3、公共控制器 进入了控制器层,开始执行公共控制器 ControllerBase.php 公共控制器加载时做了三件事,初始化请求信息,初始化全局静态资源,初始化响应类型。 ### 4、模块控制器 公共控制器执行完毕则进入了请求的模块控制器,在模块控制器中执行业务逻辑层完成相应的业务逻辑处理,业务逻辑层处理后返回控制器层,由控制器进行模板渲染或请求跳转。 ### 5、模块业务层 控制器调用过来由业务层进行业务逻辑处理,业务逻辑可以简单处理业务返回数据,也可以有很多分支,当然也可以调用函数库与composer安装的一些依赖进行数据处理。 ### 6、数据验证层|系统服务层|数据模型层... 数据验证层主要做数据合法性验证,若验证可能跨模块可放入公共模块的验证层。 系统服务层主要是给系统提供第三方服务,当然也可以是自行研发的服务,如:支付,云储存,短信 等。 数据模型层则是数据库表的映射,可通过数据模型操作数据表。 ### 7、数据访问层 数据访问层则是指ModelBase,因为几乎所有的数据库操作都需要经过此处,目前此处的数据库访问操作都是通用的,会自动识别当前访问的数据模型对象进行相应的表操作,若需要将数据访问分散不需要自动识别则建议将数据表操作封装在各表的数据模型文件,通用部分封装在各模型层的基类文件。 ### 8、响应输出 以上流程执行完毕后请求原路返回,通过返回的数据进行JSON或模板的渲染响应输出。 ### 9、应用结束 输出后则会执行应用结束行为,进行日志的写入。 OneBase系统生命周期大致就是这样,当然中途可能会有很多分支及判断包括权限验证等,此处不在细分。