Frame\Run 解析控制器并执行方法。入口文件:定义 ROOTPATH / WEBPATH / FCPATH / WRITEPATH / CONFIGPATH 等;前台入口默认 IS_ADMIN=FALSE,后台入口文件先 define('IS_ADMIN', TRUE) 再引入 index.php。未安装时(无 cache/install.lock)会跳转安装。
Fcms/Init.php:选择底层框架目录并定义 FRAMEPATH、CMSPATH、APPSPATH、MYPATH、TPLPATH;加载自定义函数与系统配置;处理伪静态 / 自定义路由;识别应用参数 s,定义 APPPATH、APP_DIR、IS_API、IS_MEMBER、IS_HOME 等;加载 Helper 后进入 System。
System/Init.php:检测 PHP 版本;注册自动加载(Phpcmf\Auto);触发钩子 cms_run;启动 \Frame\Run。
bootWeb():按场景选择命名空间,用 c / m 定位控制器类与方法并执行(默认 Home::index)。必要时校验 CSRF。
| 场景 | 无应用(核心) | 有应用(APP_DIR) |
|---|---|---|
后台 IS_ADMIN | \Phpcmf\Control\Admin\* | \Phpcmf\Controllers\Admin\* |
会员 IS_MEMBER | — | \Phpcmf\Controllers\Member\* 或会员应用 Controllers |
API IS_API(s=api) | \Phpcmf\Control\Api\* | \Phpcmf\Controllers\Api\* |
| 前台 | \Phpcmf\Control\* | \Phpcmf\Controllers\* |
以下常量在引导阶段定义,二次开发中可直接使用。入口文件中已定义的不会被后续覆盖(多数使用 !defined(...) && define(...))。
| 常量 | 典型指向 | 说明 |
|---|---|---|
ROOTPATH / WEBPATH | public/ | 网站运行目录(入口所在目录) |
FCPATH | dayrui/ | 程序主目录,支持自定义路径 |
WRITEPATH | cache/ | 缓存与运行时数据目录 |
CONFIGPATH | config/ | 公共配置目录 |
FRAMEPATH | dayrui/System/ | 底层运行时目录(可由 cache/frame.lock 等切换兼容框架) |
CMSPATH / COREPATH | dayrui/Fcms/ | 业务核心目录(COREPATH 为兼容别名) |
APPSPATH | dayrui/App/ | 全部应用的根目录 |
APPPATH | 当前应用目录,或无应用时为 FRAMEPATH | 当前请求所属应用路径 |
APP_DIR | 如 news,无应用为空 | 当前应用目录名(小写) |
MYPATH | dayrui/My/ | 二次开发覆盖层 |
TPLPATH | template/ | 前台主题模板根目录 |
SELF | 如 index.php、adminxxx.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) |
需要改目录布局时,优先在入口文件中重定义 FCPATH、WRITEPATH、CONFIGPATH 等,勿改 Fcms/ 核心文件。
可在 config/custom.php 或 dayrui/My/Helper.php 中补充自定义函数;若定义 cms_init(),会在解析应用目录前执行。
引导早期触发 cms_run 钩子,可在此介入程序启动后的扩展逻辑。