Files

91 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 目录结构
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('<插件名>')`