打开 index.php 后,首先加载 c_system_base.php 来初始化相关操作
打开所有的错误报告,打开缓存
定义网站路径和 hookerror 错误常量
定义版本号相关常量11个
将 15 1626 类似的版本写入超全局变量 $GLOBALS['blogversion']
加载同目录下的另外4个基础函数文件 plugin(插件接口相关) debug(错误调试) common(辅助通用函数) event(事件相关函数)
设置自动注册类函数为自己的函数 AutoloadClass函数,当使用的函数未注册时使用该函数注册
定义系统常量,分别是操作系统7个、网站服务器6个、PHP引擎7个、兼容性相关12个、文章类型9个,共41个
定义文章类型超全局数组变量 $GLOBALS['posttype'] array(array(1,2,3))
定义文章状态常量6个
定义命令超全局数组变量 $GLOBALS['actions'] array(1,2,...)
定义数据表超全局数组变量 $GLOBALS['table'] array(1,2,...)
定义数据库结构超全局变量 array(array(array(1,2,...)))
定义4个超全局变量 $_SERVER 相关资料说不建议用
版本兼容性处理,如果 PHP 支持 get_magic_quotes_gpc 且打开了该功能,则使用自己的函数将 $_GET $POST $_COOKIE $_REQUEST 添加的的反斜杠删除
定义系统全局变量 $GLOBALS 8个
将配置文件通过 require 到 $GLOBALS['option'] ,可以在全局中使用 $GLOBALS['option']['xxxx'] 来获取配置数据. 这个配置文件在 zb_system/defend/option.php
配置包括是否关闭网站、网站基本设置、数据库配置、插件、全局配置、静态化等等
接下来判断 如果 ZBP_HOOKERROR 为 false 且有全局环境变量 $_ENV['ZBP_USER_OPTION'] 且这个文件可读,则将其赋值到 $op_users 变量,并将这个数组合并到 $GLOBALS['option'] 全局变量中, 否则如果 zb_users/c_option.php 文件存在,将 zb_users/c_option.php 的数组赋值到 $op_users 变量,并将这个数组合并到 $GLOBALS['option'] 全局变量中
P.S. 我在zblogphp150版本中搜索了很多次,都没有找到哪里有定义 $_ENV['ZBP_USER_OPTION'] 这个变量的!
接下来将 $GLOBALS['option'] 里的一些数据赋值到 $GLOBALS 的网站信息,包括 博客标题,博客名称,博客主题什么的...
然后开始系统实例化,使用 AutoloadClass函数 (这个函数在 zb_system/function/common.php 文件中,前面有个插件中断方式的,只要不是return就能加载对应类,待研究) 来实例化位于 zb-system/function/lib下的类函数.这里依次加载了 zbp全局操作类、SQL语句生成类、配置类
然后通过
$GLOBALS['zbp'] = ZBlogPHP::GetInstance();
$GLOBALS['zbp']->Initialize();
初始化 $zbp
最后加载主题和插件APP:
如果能读取到博客主题的 theme.xml ,则将 博客主题名称 赋值到 $GLOBALS['activedapps'][]
如果能读取到博客主题的 include.php ,则将这个文件加载进来(主题插件的)
获取需要激活的插件名称数组,赋值到 $aps
然后依次将插件名称放入 $GLOBALS['activedapps'][] 以及加载对应的 include.php 文件(主动方式插入注册)
foreach 循环执行插件的函数
最后的最后将使用过的变量销毁 c_system_base.php 结束