迅睿框架系统说明文档
(迅睿框架 · 技术架构与功能说明)
目录
1. 文档概述
1.1 编写目的
本文档用于说明迅睿框架(以下简称“本框架”)的技术架构、目录组成、核心能力与部署要求,供项目实施、二次开发、运维及技术评审使用。
1.2 适用范围
本文档适用于迅睿框架部分,不包含 CMS 建站、用户系统等 L1 子应用的完整业务说明。
1.3 读者对象
系统架构师、PHP 开发工程师、运维工程师、项目经理。
1.4 文档约定
文中“框架”“框架核心”“本安装包”均指迅睿框架整体;
“子应用”指安装于 dayrui/App/ 下的 L1/L2 应用(如 CMS 建站系统、用户系统等)。
2. 产品定位与术语
2.1 产品定位
迅睿框架是一套面向 Web 站点与业务系统的 PHP 应用框架,采用“框架核心 → L1 应用 → L2 插件”的分层架构。框架核心负责站点运行、权限与安全、路由与钩子、字段与后台脚手架、多应用安装升级等通用能力;具体业务产品线以子应用形式按需安装,实现“按需组合、分步上线”。
2.2 术语定义
| 术语 | 说明 | 备注 |
|---|---|---|
| 迅睿框架 | System 引擎 + Fcms 核心业务层 | 本仓库主体 |
| Fcms | 框架核心业务目录(dayrui/Fcms/) | 非子应用,非 CMS |
| System | 运行时引擎(dayrui/System/) | FRAME_NAME=System,4.7 |
| L1 应用 | 安装在 dayrui/App/ 的业务应用 | 如 CMS、用户系统、表单系统等 |
| L2 插件 | 挂载于 L1 下的能力扩展 | 如支付、多语言、企微登录等 |
| CMS 建站系统 | 框架下的 L1 子应用之一 | 需单独安装,不在框架核源码包内 |
| My | 官方二次开发扩展目录 | dayrui/My/ |
3. 系统总体架构
3.1 分层架构
本框架在结构上可概括为三层递进:
(1)框架核心层:System 引擎 + Fcms 核心业务层,统一完成站点运行、权限与安全、路由与钩子、安装升级规范;
(2)L1 应用层:在框架之上承载具体业务产品线,可按站点选配安装;
(3)L2 插件层:在固定业务边界内叠加支付、多语言、第三方登录等能力,并可搭配行业模板。
3.2 双核结构
System 引擎+Fcms 核心,PHP 运行时、数据库、缓存、事件、调试、HTTP 启动调度,控制器、模型、字段、类库、后台视图、安装 SQL、钩子
3.3 与本安装包的关系
本源码包为迅睿框架,仅包含框架核心;dayrui/App/ 为子应用挂载目录,默认无已安装的 L1 业务应用。CMS 建站、完整会员前台等能力需从应用市场安装对应子应用后获得。
4. 目录结构说明
| 路径 | 说明 |
|---|---|
| dayrui/System/ | System 引擎 |
| dayrui/Fcms/ | 迅睿框架核心业务目录(框架核心,禁止随意修改) |
| dayrui/My/ | 二次开发扩展位 |
| dayrui/App/ | L1/L2 子应用安装目录 |
| config/ | 站点配置:伪静态、钩子、字段等 |
| cache/ | 运行时配置、缓存、日志、备份 |
| template/ | 前台模板(pc / mobile) |
| public/ | Web 入口、后台入口、静态资源、上传 |
Fcms 子目录说明:Config(配置与安装 SQL)、Control(框架自带控制器)、Core(核心类与 Helper)、Field(内置字段类型)、Library(系统类库)、Model(系统模型)、View(后台模板)、Temp(临时文件)。
5. System 引擎
5.1 版本与运行环境
引擎标识:FRAME_NAME = System,FRAME_VERSION = 4.7。PHP 版本要求:大于等于 8.0 且小于 8.6(引擎启动时校验)。数据库建议:MySQL 5.7 及以上。
5.2 子系统模块
| 模块 | 功能说明 |
|---|---|
| Extend/Run | Web 启动、性能计时、按 c/m 分发控制器、POST 时 CSRF 校验、开发态调试栏 |
| Extend/Controller | 控制器抽象基类;Cookie 封装(HttpOnly、SameSite) |
| Extend/Model、Database | 数据库连接、多数据源、表前缀 |
| Extend/Cache、Session、Hook | 缓存、会话、与 Fcms 钩子桥接 |
| Database | 多驱动、Query Builder、迁移、Forge 建表 |
| Cache | File、Memcached、Redis、Predis、Wincache;响应缓存 |
| Events | 系统级事件 |
| Debug | 调试工具栏、计时器;路由/SQL/视图/文件采集 |
| Config、Helpers | 服务配置及 URL、表单、安全、文件等辅助函数 |
5.3 数据库驱动支持
MySQLi、PostgreSQL、SQLite3、Oracle OCI8、可定制国产数据库。
6. Fcms 框架核心业务层
Fcms 是迅睿框架的核心业务目录,提供站点运营所需的通用能力,而非某一 L1 子应用(如 CMS)的实现代码。官方要求:不应直接修改 Fcms 核心文件,应通过 My/ 目录、config 配置、钩子及子应用进行扩展。
6.1 核心类
Phpcmf\Common:全局上下文:多站点、管理员/会员、模板路径、附件 URL、终端识别
Phpcmf\Service:服务容器:模型、类库、视图、App 扫描与自动加载合并
Phpcmf\Auto:PSR-4 与 classmap 双通道自动加载
Phpcmf\Hooks:钩子机制,支持优先级与 App 级注册
Phpcmf\Model:数据访问封装,支持多数据源与条件构造
Phpcmf\Table:后台 CRUD 脚手架:列表、搜索、回收站、自定义字段联动
Phpcmf\View:模板引擎与标签解析(pc / mobile / admin)
Phpcmf\App:子应用基类,校验 install.lock
Helper.php:dr_* 系列工具函数
6.2 系统模型
框架自带模型包括:Auth(权限)、Site(多项目)、Field(字段元数据)、Attachment(附件)、Linkage(联动菜单)、Menu(后台菜单)、Cron(任务)、Member(会员基础)、Cache、Email、System 等。内容栏目、模块索引等完整能力由 CMS 等 L1 子应用安装后提供并映射扩展类。
6.3 系统类库
Router、Security、Upload、Image、Storage、Cache、Email、Notice、Http、Api、Lang、Seo、Page、Tree、Form、Html、Input、Captcha、File、Ip、Pinyin、Phpqrcode、Thread 等。
7. 请求处理流程
1)public/index.php:定义 ROOTPATH、FCPATH、WRITEPATH 等常量;检测 install.lock,未安装则进入安装程序。
2)Fcms/Init.php:加载系统与站点配置;定义 SYS_* 运行常量;识别 HTTPS 与当前 URL;解析伪静态规则;处理 ?s= 子应用路由及域名绑定;检测已安装的 member、module 等子应用;执行 cms_init()(若已定义)。
3)System/Init.php:PHP 版本校验;加载 Auto、Service、Hooks;调用 Frame\Run::bootWeb()。
4)Run::bootWeb():按 IS_ADMIN / IS_MEMBER / IS_API 选择控制器命名空间;根据 c、m 实例化控制器并执行方法;POST 请求在开启 SYS_CSRF 时进行校验。
5)控制器继承 Phpcmf\Common,业务逻辑中通过 Service 访问模型、类库与视图。
8. 路由与多应用机制
8.1 URL 形式
经典形式:index.php?s={应用标识}&c={控制器}&m={方法}。
伪静态:通过 config/rewrite.php 正则规则映射为内部 GET 参数。
API:?s=api 时定义 IS_API,部分接口可配置 CSRF 豁免。
8.2 子应用识别
?s=member 进入用户系统子应用(需安装 member 且存在 install.lock);
?s={AppName} 且 dayrui/App/{AppName}/ 存在时进入对应子应用;cache/config/domain_app.php 可将域名绑定到指定子应用。
常量 IS_USE_MEMBER、IS_USE_MODULE 由对应子应用安装状态决定。
9. 安全体系
XSS 过滤与 URL 安全处理(Security 类、dr_safe_url 等)
CSRF:SYS_CSRF 开关,支持白名单 URI(Service::Filters、App Config/Filters.php)
API 鉴权:SYS_API_TOKEN、SYS_API_CODE 等
后台登录加固:验证码、AES、OAuth、短信登录、登录次数与时效限制
附件安全:扩展名配置、图片检测、游客上传控制
系统密钥:SYS_KEY
10. 缓存与性能
支持文件、Memcached、Redis、Predis、Wincache 等缓存驱动。分场景开关:列表、搜索、短信、定时任务等(SYS_CACHE_*)。开发模式(IS_DEV)下可强制关闭缓存。System 层提供 ResponseCache 与调试工具栏性能统计。
11. 数据与存储
11.1 附件
本地上传目录可配置绝对或相对路径;支持云存储策略(ThirdParty/Storage 插件)。附件可入库管理(attachment 相关表)。支持水印、缩略图。
11.2 安装基础表
框架安装 SQL(Fcms/Config/Install.sql)创建管理员、角色、菜单、多项目 site、会员基础表、附件、字段元数据、联动菜单、SMTP、任务队列等,为框架运行所需,非 CMS 子应用业务表。
12. 后台管理功能
| 菜单模块 | 主要功能 |
|---|---|
| 首页 | 我的面板、资料修改、系统缓存更新、应用市场入口 |
| 系统 | 系统参数、缓存、附件与存储策略、短信、邮件、系统提醒、系统体检 |
| 日志 | 系统错误、操作记录、密码错误、短信/邮件失败、慢 SQL |
| 设置 | 项目设置、手机站、域名绑定、项目信息、图片设置 |
| 权限 | 后台菜单、简化菜单、角色权限、管理员账号 |
| 应用 | 本地应用管理、联动菜单、任务队列、附件管理 |
| 服务 | 我的项目、工单、应用商城、模板商城、版本升级 |
13. 自定义字段体系
Fcms/Field/ 内置约 28 种字段类型,涵盖文本、多行文本、单选/多选、日期时间、颜色、图片/文件/多文件、富文本编辑器、联动菜单、分组、表格字段、支付相关字段等。Library/Field.php 按名称加载 Phpcmf\Field\*、My\Field\* 或子应用内扩展字段类。Table 脚手架与自定义字段、权限面板联动,供 L1 应用快速构建后台表单与列表。
14. 通知与任务
通知:支持邮件、短信;Notice 类可按动作名发送通知,子应用可通过 Config/Notice_type.php 注册扩展通道。任务:cron 数据表记录计划任务;入口 public/api/cron.php,可配置 SYS_CRON_AUTH。备份:cache/backups/ 支持数据库、文件、模板等备份目录。
15. 子应用(L1/L2)规范
子应用安装于 dayrui/App/{Name}/,典型结构:
install.lock — 已安装标识
Config/App.php — 应用元信息
Config/Auto.php — 自动加载扩展
Config/Hooks.php — 钩子注册
Config/Filters.php — CSRF 白名单
Controllers/、Models/、Views/ — 业务代码
Phpcmf\App 构造时校验 install.lock。框架 Admin/Cloud 提供应用下载、安装与在线升级。CMS 建站系统、用户系统、表单系统等均为 L1 子应用,与框架核心源码分离分发。
16. 二次开发指南
config/custom.php、My/Helper.php:自定义函数
config/hooks.php、Phpcmf\Hooks::on():钩子扩展
My/Field/、config/myfield/:自定义字段
config/rewrite.php、config/router.php:路由与伪静态
My/Model/、My/Library/:继承扩展模型与类库
ThirdParty/Storage/:云存储驱动插件
dayrui/App/{App}/:独立子应用开发
17. 部署与运行环境
| 项目 | 要求/说明 |
|---|---|
| PHP | 8.0 ~ 8.5 |
| MySQL | 5.7 及以上 |
| Web 根目录 | 指向 public/(推荐) |
| 安装 | 访问 /install.php,生成 cache/install.lock |
| 环境检测 | /test.php |
| 后台入口 | public/admin****.php(**** 为随机字符) |
| 授权 | 开源版采用 MIT 许可证 |
| 开发者模式 | index.php 中 IS_DEV,上线建议关闭 |
18. 附录:框架安装基础表清单
cron — 任务队列
admin、admin_role、admin_role_index — 管理员与角色
admin_menu、admin_min_menu — 后台菜单
admin_login、admin_notice、admin_setting — 登录日志、提醒、设置
site — 多项目(站)
member、member_data — 会员基础结构
field — 自定义字段元数据
attachment、attachment_data、attachment_remote、attachment_unused — 附件
linkage、linkage_data_* — 联动数据
mail_smtp — 邮件发送配置