Download the PHP package tsaotai/tsaotai-addons without Composer
On this page you can find all versions of the php package tsaotai/tsaotai-addons. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package tsaotai-addons
TsaoTai Addons
TsaoTai plugin system for ThinkPHP 8.
目录
- 安装
- 快速开始
- 配置
- 快速创建插件
- 开发插件指南
- AI 开发指南
- API 文档
- 升级指南
安装
快速开始
方式 A:自动加载(推荐)
安装后,包会通过 ThinkPHP 服务提供者自动加载插件和路由,无需额外配置!
方式 B:手动配置
如果需要手动配置:
1. 配置插件加载器
在 app/addons.php:
2. 配置插件路由
在 route/addons.php:
配置
配置文件
在 config/addons.php 中配置,然后在 app/provider.php 或其他地方加载:
加载配置
在 app/provider.php 或服务提供者中加载:
动态配置
快速创建插件
方式 1:命令行(推荐)
现在支持 3 种命令,任你选择:
创建带完整信息的插件:
创建包含可选目录的插件:
命令选项说明:
| 选项 | 说明 |
|---|---|
--title |
插件标题 |
--description |
插件描述 |
--author |
插件作者 |
--plugin-version |
插件版本 |
--with-model |
创建 model 目录 |
--with-validate |
创建 validate 目录 |
--with-public |
创建 public 目录 |
--with-base |
创建插件自己的 Base 控制器(继承 addons\common\AuthBase,默认启用) |
--with-config |
创建 config.php 插件配置文件 |
--with-common |
创建 common.php 公共函数文件 |
--with-service |
创建 service.php 服务文件 |
--with-provider |
创建 provider.php 服务提供者 |
--with-event |
创建 event.php 事件配置 |
--with-middleware |
创建 middleware.php 中间件配置 |
方式 2:代码方式
开发插件指南
1. 理解插件结构
自动生成的插件目录结构如下:
2. 插件配置详解
plugin.php 是插件的核心配置文件,所有字段都有详细注释:
3. 开发主控制器
主控制器继承 BaseController:
视图解析规则:
BaseController::fetch() 方法严格遵循 TP8 原生规范:
- 空模板时:自动解析为
控制器目录/控制器名(小写)/方法名 - 示例:
Demo::index()→view/demo/index.html - 支持完整路径:
$this->fetch('demo/index')
4. 开发插件管理控制器
管理控制器继承 PluginController,自动拥有安装/卸载功能:
5. 视图开发
视图文件放在 view/ 目录下:
6. 数据文件
插件数据放在 data/ 目录下:
data/plugin/update.md- 更新日志data/plugin/rule.md- 使用规则data/plugin/readme.md- 数据说明
7. 自定义路由
插件可以在 route.php 中定义自定义路由:
自动路由注册:
系统会自动为每个启用的插件注册以下标准路由:
| 路由 | 方法 | 说明 |
|---|---|---|
plugin/{identifier} |
ANY | 插件管理首页 |
plugin/{identifier}/install |
ANY | 安装插件 |
plugin/{identifier}/uninstall |
ANY | 卸载插件 |
plugin/{identifier}/update |
ANY | 更新日志 |
plugin/{identifier}/rule |
ANY | 使用规则 |
8. 加载插件资源
插件可以加载多种资源文件:
这些文件会在插件加载时自动引入。
9. 使用助手函数
包提供了便捷的助手函数:
addons()
addons_url()
addons_view()
addons_path()
10. 访问插件
- 前台页面:
http://your-domain/addons/demo - 插件管理:
http://your-domain/plugin/demo
使用 Facade(更简洁)
AI 开发指南
使用 AI(如 Claude、GPT 等)辅助开发插件,请查看 AI-DEVELOPMENT-GUIDE.md。
包含内容:
- 给 AI 的完整项目上下文
- 插件结构说明
- 常用开发模式
- 可复制的提示词模板
- 完整示例(待办事项插件)
API 文档
类说明
| 类名 | 说明 |
|---|---|
tsaotai\addons\BaseController |
插件基础控制器(推荐新插件使用),1:1 复刻 TP8 原生视图解析规则 |
tsaotai\addons\CommonController |
旧版本基础控制器(保留,向后兼容) |
tsaotai\addons\PluginController |
插件管理控制器,提供安装/卸载/update/rule 方法 |
tsaotai\addons\Loader |
插件加载器,自动加载配置、路由、事件、中间件等 |
tsaotai\addons\Router |
插件路由注册器,自动注册标准插件路由 |
tsaotai\addons\Addons |
插件管理器,提供插件列表、创建等功能 |
tsaotai\addons\Generator |
插件生成器,命令行创建插件的核心实现 |
tsaotai\addons\AddonDiscovery |
插件发现服务(统一插件目录扫描) |
tsaotai\addons\Config |
配置管理类 |
tsaotai\addons\Service |
ThinkPHP 服务提供者,自动注册服务和命令 |
Facade API
| 方法 | 说明 |
|---|---|
Addons::load() |
加载插件 |
Addons::registerRoutes() |
注册插件路由 |
Addons::getAddons() |
获取所有插件信息 |
Addons::scanAddons() |
扫描插件目录 |
Addons::create($name, $options) |
创建新插件 |
Config API
| 方法 | 说明 |
|---|---|
Config::get($name, $default) |
获取配置 |
Config::set($name, $value) |
设置配置 |
Config::load($config) |
加载配置 |
AddonDiscovery API
| 方法 | 说明 |
|---|---|
AddonDiscovery::getAddonNames() |
获取所有插件目录名称 |
AddonDiscovery::getAddonPath($name) |
获取插件路径 |
AddonDiscovery::exists($name) |
检查插件是否存在 |
AddonDiscovery::hasConfig($name) |
检查插件是否有配置文件 |
AddonDiscovery::getConfig($name) |
获取插件配置 |
AddonDiscovery::isInstalled($name) |
检查插件是否已安装 |
插件开发规范
命名规范
- 插件目录名:纯小写英文,无下划线,不可修改
- 控制器类名:大驼峰,继承对应基类
- 视图文件:小写下划线分隔
- 配置字段:小写字母,下划线分隔
目录说明
| 目录/文件 | 说明 | 必填 |
|---|---|---|
controller/ |
控制器 | 是 |
view/ |
视图 | 是 |
data/ |
数据文件(update.md/rule.md) | 是 |
model/ |
模型 | 否 |
validate/ |
验证器 | 否 |
public/ |
公共资源(css/js/images) | 否 |
plugin.php |
插件配置 | 是 |
route.php |
插件路由 | 否 |
common.php |
公共函数 | 否 |
request.php |
请求绑定 | 否 |
service.php |
服务文件 | 否 |
provider.php |
依赖注入 | 否 |
event.php |
事件监听 | 否 |
middleware.php |
中间件 | 否 |
版本号规范
采用年份.季度.修订号格式:
2026.1.1- 2026年第一季度第1个版本2026.2.3- 2026年第二季度第3个版本
升级指南
从 2026.1.x 升级到 2026.1.4
- 完全兼容,无需修改现有插件代码 ✅
- 新功能:插件生成器新增多个可选文件选项
--with-base- 创建插件自己的 Base 控制器(默认启用)--with-config- 创建 config.php--with-common- 创建 common.php--with-service- 创建 service.php--with-provider- 创建 provider.php--with-event- 创建 event.php--with-middleware- 创建 middleware.php
- 新插件结构优化:
- 主控制器现在继承插件自己的 Base(继承
addons\common\AuthBase) - 视图模板统一使用
{extend name="admin@public/base"}
- 主控制器现在继承插件自己的 Base(继承
从 2026.1.1 升级到 2026.1.2
- 完全兼容,无需修改现有插件代码 ✅
- 稳定性修复:
- 移除不正确的
Request::bind()用法(request.php文件不再自动加载) - 增加
AddonDiscovery::validateIdentifier()方法,校验插件 identifier 与目录名一致 - 加载器和路由注册时会跳过 identifier 不一致的插件,防止配置错误导致的潜在问题
- 移除不正确的
从 1.7.x 升级到 2026.1.1
- 完全兼容,无需修改现有插件代码 ✅
CommonController已保留作为向后兼容- 旧插件可以继续使用
- 新插件建议:直接继承
BaseController - 版本号格式更新为 2026.1.1
BaseController::fetch()采用 TP8 原生视图解析规则- 稳定性修复:
- 移除不正确的
Request::bind()用法(request.php文件不再自动加载) - 增加
AddonDiscovery::validateIdentifier()方法,校验插件 identifier 与目录名一致 - 加载器和路由注册时会跳过 identifier 不一致的插件,防止配置错误导致的潜在问题
- 移除不正确的
从 1.5.x 升级到 1.6.x
- 无需修改现有插件代码
- 可以使用新的命令别名
addon:make和plugin:make - 插件生成器现在生成的结构更符合规范
从 1.4.x 升级到 1.5.x
- 无需修改现有插件代码
- 可以使用新的命令行工具创建插件
--version选项改为--plugin-version避免冲突
从 1.3.x 升级到 1.4.x
- 无需修改现有插件代码
- 内部重构,使用
AddonDiscovery统一插件发现逻辑
从 1.2.x 升级到 1.3.x
- 无需修改现有插件代码
- 可以使用新的插件生成器
- 可以使用
addons_path()助手函数
从 1.1.x 升级到 1.2.x
- 无需修改现有插件代码
- 可以使用新的配置功能
- 可以使用新的助手函数
从 1.0.x 升级到 1.1.x
- 无需修改现有插件代码
- 建议删除
app/addons.php和route/addons.php中的手动配置,使用自动加载 - 可以使用新的 Facade 来简化代码
License
Apache-2.0