执行顺序
文章分页:

所有响应网址均通过rewrite模块反馈给根目录下的index.php脚本统一处理,虽然框架也支持QueryString和PathInfo两种模式,但是为了更好的网址优化和安全性,建议采用rewrite的方式,主要执行流程如下:

  • 框架根目录下的 index.php 是框架系统的统一入口,检测PHP版本需求,定义主要常量,引入框架核心类文件,并调用框架初始化方法 myStep::init() ,并进行域名绑定检测及通用性处理;
  • 框架经过初始化后,进行路由模式检测,判断当前URL为可直连文件、应用名称模式自定义模式
    • 若链接指向 /static目录下的文件,或者为设置($ms_setting->gen->static 或 $S->gen->static)中允许的扩展名,则直接显示该文件;
    • 若链接符合某个自定义路由,则执行对应路由模式指定的方法,如无特殊需要,建议使用系统提供的myStep::getModule() 方法,以便体验更多系统所提供的便捷;
    • 如未发现对应规则且路径符合应用名称模式,则直接调用应用目录下的 index.php 脚本;
    • 如不符合以上所有规则,则直接提示错误。
  • 在获取执行入口之后,框架将继续调用以下程序
    • 分析当前链接,并生成对应的应用信息($info_app 或 $I);
    • 载入应用的 config.php 文件,合并已有设置,如果为自定义路由模式,还会尝试加载APP目录下"config_[规则首层目录名].php"并合并已有配置,此外,如果需要在某个绑定自定义路由的域名下执行其他应用的接口,则需要在链接后面再加上 core=[应用名] 的参数,则框架会在用此应用的config文件覆盖现有配置;
    • 判断应用目录下是否存在核心扩展,并生成核心实例 $M ;
    • 尝试加载应用函数库(lib.php),并尝试执行核心实例的 preload方法 ,可对已载入各系统、应用参数变量进行调整;
    • 检测 js 和 css 脚本缓存是否存在或过期,并重新生成;
    • 根据配置信息,初始化模版设施参数($tpl_setting)和缓存参数($tpl_cache);
    • 执行启动方法 $mystep->start() ;
    • 尝试加载预执行脚本(global.php),优先于所有应用功能代码之前运行,为应用初始化或引入通用变量,还可以在正式进入应用之前做前置检查(如是否登录等),本脚本在应用名称路由模式下自动加载,但是如果是自定义路由模式,如没有通过系统提供的 myStep::getModule() 来引导,需要手动在定义的响应脚本中加入载入代码。
    • 通过指定的处理脚本通过模版系统生成页面后,执行 $mystep->end() 方法(内含 shutdown方法

框架响应流程图

 

上一篇:路由设置
下一篇:脚本加载