系统加载顺序
了解 ModPHP
的系统加载顺序有助于更好的在应用开发中部署程序。
在每一次调用执行时,ModPHP
会通过 __ROOT__/mod/common/init.php
文件进行初始化操作,加载系统所需文件和应用配置,以及解析请求并调用模板。
具体的初始化过程如下:
- 加载
mod/functions/
目录下的extension.func.php
扩展函数文件和mod.func.php
核心函数文件; - 加载
mod/classes/mod.class.php
核心类文件; - 加载默认模块类文件和其他类库文件,它们存放在
mod/classes/
目录下; - 加载自定义模块类文件,它们存放在
user/classes/
目录下; - 加载默认模块函数文件,它们存放在
mod/functions/
目录下; - 加载其他函数文件,他们存放在
user/functions/
目录下。 - 加载模板目录下的
functions.php
文件(如果存在); - 预备运行环境并根据请求定义常量
__DISPLAY__
、__OBJ__
和__ACT__
; - 最后,加载
__DISPLAY__
模板文件或者执行__OBJ__
和__ACT__
操作。
ModPHP 是强调前后端一致的,所以,在预备运行环境时,ModPHP 会将$_GET、$_POST 和 $_REQUEST 变量进行修改。因为表单传值或者 AJAX 都会将布尔型的 true
和 false
,以及数字、 null
和 undefined
等转换成字符串,所以 ModPHP
会在预备运行环境时将字符串 true
和 false
转换为布尔值的 true 和 false,将字符串 null
和 undefined
都转换成 null
,而将小于 2147483647
的数字字符串转为整型。
同时,ModPHP 也保留一些变量中元素键名的.
,默认地,PHP 会将它们转化为下划线,因此当你传一个参数 as.df=ghjk
时,你实际上得到的时$_REQUEST['as_df'] = 'ghjk'
。但在 ModPHP 中,如果你调用 mod::config()
方法,依旧得到的是 $_REQUEST['as.df'] = 'ghjk'
。