chore: 重写初始提交(清空历史,整理后全量提交)

This commit is contained in:
ywxapp
2026-08-16 16:54:14 +08:00
commit 6c1a106bc1
1808 changed files with 238144 additions and 0 deletions
+90
View File
@@ -0,0 +1,90 @@
# 目录结构
YwxApp 采用 ThinkPHP 多应用模式,目录职责划分清晰。
## 顶层目录
```
ywxapp_dev/
├── app/ 应用目录(多应用模式)
├── addon/ 插件目录,每个子目录是一个独立插件
├── config/ 全局配置
├── docs/ 开发文档(本文档站的数据源)
├── extend/ 扩展类库(PSR-0
├── public/ Web 根目录,入口文件与静态资源
├── route/ 全局路由定义
├── runtime/ 运行时缓存、日志、临时文件
├── templates/ 模板皮肤包
├── vendor/ Composer 依赖
└── ywxapp/ 框架核心库(PSR-4 命名空间 ywxapp\
```
## app 应用目录
```
app/
├── api/ 对外 API 接口应用
├── backend/ 后台管理应用
├── member/ 会员中心应用
├── frontend/ 前台应用
├── site/ 展示官网 / 文档站应用
├── common.php 全局公共函数
├── event.php 全局事件定义与监听器注册
├── middleware.php 全局中间件
├── provider.php 容器绑定
└── service.php 服务注册(含 AppService
```
> **注意**:多应用模式下 `base_path()` 返回的是 `app/` 目录而非项目根目录。
> 若需要扫描 `addon/`、`app/` 等顶层目录,必须使用 `root_path()`。
## addon 插件目录
单个插件的标准结构:
```
addon/<插件名>/
├── info.php 插件清单:name/title/intro/version/state
├── Addon.php 插件主类,继承 ywxapp\addon
├── config.php 插件配置项定义
├── menu.json 后台菜单定义
├── install.sql 安装 SQL
├── controller/
│ ├── backend/ 后台控制器(继承 AddonBackend
│ ├── api/ 接口控制器
│ └── frontend/ 前台控制器
├── model/ 数据模型
├── service/ 业务服务
├── subscribe/ 事件订阅器(钩子实现)
├── route/app.php 插件路由(写相对组名,框架自动补前缀)
├── view/ 视图模板
└── docs/ 插件文档
```
## ywxapp 核心库
```
ywxapp/
├── command/ 自定义命令行工具
├── controller/ 控制器基类(Frontend / Backend / AddonBackend / Api
├── library/ 工具类库(SchemaGuard / SkinOverlay / Markdown 等)
├── middleware/ 框架中间件(MultiApp / AddonPerformance 等)
├── service/ 核心服务(AppService / AddonService
├── addon.php 插件基类
└── helper.php 全局辅助函数
```
## 路由约定
由于 `MultiApp` 中间件会将 URL 首段解析为应用名,因此:
- 应用级路由文件 `app/<app>/route/route.php` **不会自动加载**
- 全局路由统一写在 `route/app.php`,并携带应用名前缀
```php
// route/app.php
Route::get('site/doc', 'site/doc/index');
```
插件路由则写在 `addon/<插件名>/route/app.php`,使用相对组名,由
`AppService::loadAddonRoutes()` 自动包裹 `Route::group('<插件名>')`