执行玩初始化相关操作后,实例化对象为 $GLOBALS['zbp'] = $zbp, 使用这个全局对象可以使用 lib/zblogphp类(全局操作类)的所有函数
$zbp->RedirectInstall();
这个是跳转到安装页面的函数,判断 $this->option['ZC_DATABASE_TYPE'] 配置是否有值,因为会加载 zb_users/c_option.php ,同键值后者覆盖前者,如果没有值才安装.然后还会判断 $this->option['ZC_YUN_SITE'] 这个值,这个值是 空的,所以进入该语句内的又一个 if 判断, $this->Config
('system')->CountItem() == 0 判断数据config表配置名为 system 的 值,如果没有值就跳转到注册页面.正常安装之后这个函数就没用了.
$zbp->CheckGzip();
检查是否打开 Gzip压缩,如果打开则 $zbp->isgzip 为 true ,这个变量是私有的,只能在 zblogphp类中使用,不能通过实例化调用.
$zbp->Load();
首先使用 foreach循环获取 $GLOBALS['hooks']['Filter_Plugin_Zbp_Load_Pre'] Zbp类的加载(预处理)接口的插件名称和插件中断方式(在Add_Filter_Plugin 挂上Filter(过滤器)接口,第三个参数,默认是PLUGIN_EXITSIGNAL_NONE,没有中断.另外两种是 return 和 break 方式).不过这里会将 插件中断方式清空在加载插件函数.
之后判断是否初始化成功,失败则返回false
之后判断是否载入,载入则返回false
接下来执行 StartGzip() 函数打开 Gzip ,看来必须要成功,不然还无法载入?
header('Content-type: text/html; charset=utf-8'); 输出编码格式
执行 ConvertTableAndDatainfo() 函数对表明和数据结构进行预转换
执行 LoadCategorys() 函数载入分类列表
执行 LoadTags() 函数载入标签列表,被注释掉了.
执行 LoadModules() 函数载入载入模块列表
执行 Verify()函数验证用户登录(COOKIE中的用户名密码)
之后执行 RegBuildModule() 函数重建了9个模块,第一个参数是模块名,第二个参数是用户函数.
然后 PrepareTemplate() 创建模板类
通过 LoadApp 函数载入指定应用,这里是载入 theme ,然后如果应用类型不是空的话则获取主题信息
通过 $this->ismanage 判断是否载入 管理模式,默认为false
最后通过 Add_Filter_Plugin() 挂载插件文件,这里挂载了3处!
然后 使用 foreach 函数加载钩子函数,设置 已加载标识,返回 true, Load() 结束!
$zbp->RedirectPermanentDomain();
该函数作用是检测当前的URL,如果不符合设置就跳转到固定的域名链接.
有两个判断,一个是是否启动固定域名,一个是是否打开永久域名重定向(这个没看到在哪里有设置,默认是true).所以会继续执行该函数.
接下来先使用 GetCurrentHost() 函数来获取当前的网站地址,这个函数在 zb_system/function/s_system_common.php 文件中,返回的是完整的地址. $this->host 是返回的网站路径?还是返回网址?不过这两次执行的函数的参数都是一样,只是一个带入和cookie一个没有.如果两次结果不一样则执行 GetRequestUri() 函数获取请求来源URL,看代码应该是返回最后一个斜杠之后的参数,拼接网站PATH,最后 执行 Redirect301() 函数进行301跳转.这几个函数都是在 common.php 文件.
$zbp->CheckSiteClosed();
最后一个调用的zblogphp类的函数是这个,检测网站是否关闭,如果关闭则显示错误页(关闭提示)并终止执行.
接下来如果没有关闭网站则 foreach 执行插件函数 (位于启动接口的的插件),显示页面之前
执行 ViewIndex() 函数显示首页,当然搜索页、feed页也是用这个函数显示的.
之后再次 foreach 执行插件函数,此处是启动个完毕之后的插件执行接口.
最后执行 RunTime() 函数显示页面执行时间,程序执行结束,显示页面.