# 盆底动力项目结构分析 ## 项目概述 本项目基于 Webman 框架开发,采用插件化架构设计,主要功能模块通过插件方式实现。 ## 核心插件结构 ### 1. 后台管理系统 (plugin/admin) 后台管理系统插件,提供完整的后台管理功能: - `app/`: 核心应用代码 - `controller/`: 控制器目录 - `model/`: 数据模型目录 - `view/`: 视图模板目录 - `middleware/`: 中间件目录 - `common/`: 公共组件目录 - `exception/`: 异常处理目录 - `functions.php`: 自定义函数文件 - `config/`: 插件配置目录 - `api/`: 内部接口目录 - `public/`: 静态资源目录 - `install.sql`: 数据库安装脚本 ### 2. 盆底动力核心功能 (plugin/kegel) 盆底动力核心功能插件,提供主要业务功能: - `app/`: 核心应用代码 - `controller/`: 控制器目录 - `model/`: 数据模型目录 - `view/`: 视图模板目录 - `service/`: 服务层目录 - `validate/`: 数据验证目录 - `middleware/`: 中间件目录 - `provider/`: 服务提供者目录 - `event/`: 事件处理目录 - `admin/`: 后台相关功能目录 - `functions.php`: 自定义函数文件 - `config/`: 插件配置目录 - `api/`: 内部接口目录 ## 项目特点 1. 采用插件化架构,便于功能模块的独立开发和维护 2. 遵循 MVC 设计模式,代码结构清晰 3. 使用服务层(Service)处理复杂业务逻辑 4. 包含完整的数据验证机制 5. 支持事件驱动开发 6. 提供内部 API 接口,便于模块间通信 ## 技术栈 - 框架:Webman - 数据库:MySQL - 模板引擎:支持多种模板引擎 - 中间件:支持自定义中间件 - 事件系统:支持事件驱动开发 ## 快速开始 ### 环境要求 - PHP 8.2+ - MySQL 5.7+ - Composer ### 启动项目 **Windows:** ```bash php windows.php ``` **Linux/Mac:** ```bash php start.php start ``` ### 数据库同步 项目提供了一键同步线上数据库到本地的脚本: **Windows:** ```bash switch-to-local.bat ``` **Mac/Linux:** ```bash chmod +x switch-to-local.sh ./switch-to-local.sh ``` 脚本会自动完成以下操作: 1. 提示确保MySQL已启动 2. 从线上数据库同步数据到本地kegel数据库 3. 切换.env环境配置为local ### 数据库配置 项目支持多环境数据库配置,通过`.env`文件中的`DB_ENV`变量控制: - `local`: 本地开发环境(127.0.0.1:3306/kegel) - `test`: 测试环境(连接线上数据库) - `production`: 生产环境 配置文件位置:`plugin/admin/config/database.php` ## 项目结构分析 根据项目根目录下的文件和文件夹,项目结构如下: * `app/`: 可能包含项目的核心代码(控制器、模型等)。 * `config/`: 存放项目配置。 * `public/`: Web 服务器指向的目录,包含入口文件和静态资源。 * `support/`: 可能包含辅助类或函数。 * `process/`: 可能用于后台进程或队列。 * `plugin/`: 可能用于存放插件。 * `webman`, `windows.php`, `start.php`: Webman 框架相关的启动文件。 * `composer.json`, `composer.lock`: Composer 依赖管理文件。 * 其他文件如 `README.md`, `LICENSE` 等为项目文档和信息文件。 这是一个典型的 Web 应用程序项目结构,符合常见的组织规范。 ## 项目功能结构分析 (基于 MVC 模式) 根据 `app/` 目录下的结构 (`controller/`, `model/`, `view/`, `middleware/`),可以判断项目采用了 MVC (Model-View-Controller) 设计模式。其功能结构大致如下: * **Controller (控制器)** (`app/controller/`): 接收用户请求,协调 Model 和 View,是请求的入口和逻辑协调者。 * **Model (模型)** (`app/model/`): 处理数据逻辑,通常与数据库交互,代表应用程序的数据和业务规则。 * **View (视图)** (`app/view/`): 负责数据展示,生成用户界面输出 (如 HTML)。 * **Middleware (中间件)** (`app/middleware/`): 在请求/响应流程中执行预处理或后处理任务 (如身份验证、日志)。 * **functions.php** (`app/functions.php`): 可能包含常用的辅助函数。 整个流程遵循典型的 MVC 模式,有助于代码的组织和维护。 ## `app/controller/IndexController.php` 功能分析 目前在 `app/controller/` 目录下找到了 `IndexController.php` 一个控制器文件。对其内容的分析如下: 该控制器包含三个方法: * `index(Request $request)`: 读取并返回项目根目录下的 `README.md` 文件内容。 * `view(Request $request)`: 渲染 `index/view` 视图,并传递数据。 * `json(Request $request)`: 返回一个简单的 JSON 响应 `{"code": 0, "msg": "ok"}`。 由此可见,`IndexController` 提供了基础的文件展示、视图渲染和简单的 JSON 接口功能。 ## `app/model/Test.php` 数据模型分析 在 `app/model/` 目录下找到了 `Test.php` 一个数据模型文件。对其内容的分析如下: 该文件定义了一个名为 `Test` 的类,继承自 `support\Model`,用于数据库操作。它配置了: * 关联的数据表:`test` * 主键字段:`id` * 未启用时间戳。 这似乎是一个基础或示例数据模型。 ## `app/view/index/view.html` 视图文件分析 在 `app/view/index/` 目录下找到了 `view.html` 视图文件。对其内容的分析如下: 这是一个基础的 HTML 模板文件,用于展示一个简单的页面。它接收并显示了从控制器传递的 `name` 变量。 内容包括: * 标准 HTML 结构。 * 页面标题为 "webman"。 * 页面主体显示 "hello" 加上动态的 `name` 变量值。 这确认了视图层能够正确渲染模板和显示动态数据。 ## `app/middleware/StaticFile.php` 中间件分析 在 `app/middleware/` 目录下找到了 `StaticFile.php` 中间件文件。对其内容的分析如下: 这是一个实现了 `MiddlewareInterface` 的中间件,其主要功能包括: * **阻止访问隐藏文件**: 检查请求路径,如果包含 `/ .` 则返回 403 Forbidden,防止直接访问以点开头的敏感文件。 * **CORS 头部**: 代码中包含注释掉的部分,显示该中间件可能用于处理跨域请求,但目前相关功能是禁用的。 该中间件主要用于提高项目安全性,限制对隐藏文件的访问。