一次 HTTP 请求从入口文件进入后,依次完成路径常量定义、系统初始化、自动加载、钩子触发,最终由 Frame\Run 解析控制器并执行方法。

引导流程

  1. 入口文件:定义 ROOTPATH / WEBPATH / FCPATH / WRITEPATH / CONFIGPATH 等;前台入口默认 IS_ADMIN=FALSE,后台入口文件先 define('IS_ADMIN', TRUE) 再引入 index.php。未安装时(无 cache/install.lock)会跳转安装。

  2. Fcms/Init.php:选择底层框架目录并定义 FRAMEPATHCMSPATHAPPSPATHMYPATHTPLPATH;加载自定义函数与系统配置;处理伪静态 / 自定义路由;识别应用参数 s,定义 APPPATHAPP_DIRIS_APIIS_MEMBERIS_HOME 等;加载 Helper 后进入 System。

  3. System/Init.php:检测 PHP 版本;注册自动加载(Phpcmf\Auto);触发钩子 cms_run;启动 \Frame\Run

  4. bootWeb():按场景选择命名空间,用 c / m 定位控制器类与方法并执行(默认 Home::index)。必要时校验 CSRF。

控制器命名空间选择

场景无应用(核心)有应用(APP_DIR)
后台 IS_ADMIN\Phpcmf\Control\Admin\*\Phpcmf\Controllers\Admin\*
会员 IS_MEMBER\Phpcmf\Controllers\Member\* 或会员应用 Controllers
API IS_APIs=api\Phpcmf\Control\Api\*\Phpcmf\Controllers\Api\*
前台\Phpcmf\Control\*\Phpcmf\Controllers\*

路径常量

以下常量在引导阶段定义,二次开发中可直接使用。入口文件中已定义的不会被后续覆盖(多数使用 !defined(...) && define(...))。

常量典型指向说明
ROOTPATH / WEBPATHpublic/网站运行目录(入口所在目录)
FCPATHdayrui/程序主目录,支持自定义路径
WRITEPATHcache/缓存与运行时数据目录
CONFIGPATHconfig/公共配置目录
FRAMEPATHdayrui/System/底层运行时目录(可由 cache/frame.lock 等切换兼容框架)
CMSPATH / COREPATHdayrui/Fcms/业务核心目录(COREPATH 为兼容别名)
APPSPATHdayrui/App/全部应用的根目录
APPPATH当前应用目录,或无应用时为 FRAMEPATH当前请求所属应用路径
APP_DIRnews,无应用为空当前应用目录名(小写)
MYPATHdayrui/My/二次开发覆盖层
TPLPATHtemplate/前台主题模板根目录
SELFindex.phpadminxxx.php当前入口文件名

常用场景常量

常量含义
IS_DEV开发者模式(入口中定义,上线建议关闭)
IS_EDIT_TPL是否允许后台改模板(勿长期开启)
IS_ADMIN是否后台请求
IS_API是否 API(通常 s=api
IS_MEMBER是否会员中心请求
IS_HOME是否前台(非后台且非会员)
IS_USE_MEMBER / IS_USE_MODULE会员 / 建站模块已安装时的应用路径,未安装为空
IS_POST / IS_AJAX是否 POST / Ajax 请求
SYS_TIME当前请求时间戳
FRAME_VERSION底层框架版本(如 4.7)

开发提示

  • 需要改目录布局时,优先在入口文件中重定义 FCPATHWRITEPATHCONFIGPATH 等,勿改 Fcms/ 核心文件。

  • 可在 config/custom.phpdayrui/My/Helper.php 中补充自定义函数;若定义 cms_init(),会在解析应用目录前执行。

  • 引导早期触发 cms_run 钩子,可在此介入程序启动后的扩展逻辑。

本文地址:https://m.xunruicms.com/doc/xunrui/1474.html