3.3 KiB
3.3 KiB
目录结构
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,并携带应用名前缀
// route/app.php
Route::get('site/doc', 'site/doc/index');
插件路由则写在 addon/<插件名>/route/app.php,使用相对组名,由
AppService::loadAddonRoutes() 自动包裹 Route::group('<插件名>')。