PHP code example of tsaotai / tsaotai-addons
1. Go to this page and download the library: Download tsaotai/tsaotai-addons library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
tsaotai / tsaotai-addons example snippets
use tsaotai\addons\Loader;
Loader::load();
use tsaotai\addons\Router;
Router::register();
return [
// 插件路径
'path' => root_path('addons'),
// 是否自动注册路由
'auto_register' => true,
// 是否自动加载插件
'auto_load' => true,
];
use tsaotai\addons\Config;
$config =
use tsaotai\addons\Config;
// 获取配置
$path = Config::get('path');
// 设置配置
Config::set('auto_register', false);
// 批量设置
Config::set([
'auto_register' => true,
'auto_load' => true,
]);
use tsaotai\addons\facade\Addons;
// 快速创建一个插件
Addons::create('demo', [
'title' => '示例插件',
'description' => '这是一个示例插件',
'author' => '教员',
'version' => '2026.1.1',
]);
// 创建包含可选目录的插件
Addons::create('demo', [
'title' => '示例插件',
'with_model' => true, // 生成 model 目录
'with_validate' => true, // 生成 validate 目录
'with_public' => true, // 生成 public 目录
]);
return [
// 【核心唯一标识】必须与插件目录名一致,小写字母,不可重复、不可修改
'identifier' => 'demo',
// 【插件展示名称】后台列表、插件页头部正式显示名称,支持中文
'title' => '示例插件',
// 【插件完整描述】详细说明插件作用、能力、使用场景,禁止过短,便于后期查阅
'description' => '这是一个示例插件',
// 【当前版本号】语义化版本格式 主版本.次版本.修订号
'version' => '2026.1.1',
// 【开发作者】填写开发负责人/团队名称,用于版权与溯源
'author' => '教员',
// 【创建/更新日期】固定格式 YYYY-MM-DD,版本迭代同步更新
'create' => '2026-05-03',
'update' => '2026-05-03',
// 【图标标识】BootstrapIcons 纯图标名,不带 bi- 前缀
'icon' => 'tools',
// 【功能分类】tool=工具类 / function=功能类 / business=业务类
'category' => 'tool',
// 【排序权重】纯数字,数值越大,后台插件列表展示越靠前
'sort' => 0,
// 【运行状态】enable=默认启用 / disable=默认禁用
'state' => 'enable',
// 【独立配置页】布尔值 true=存在单独配置页面 / false=无额外配置
'config' => false,
// 【安装流程】布尔值 true=需要执行安装逻辑(建表/初始化数据) / false=直接启用
'install' => true,
// 【卸载清理】布尔值 true=卸载同步删除业务数据 / false=保留数据,防止误删丢失
'clean' => false,
// 【依赖插件】多个依赖逗号分隔,无依赖留空;填写目标插件 identifier 标识
'rely' => '',
// 【后台访问入口】插件独立管理页面路由地址,用于菜单点击跳转
'entry' => 'addons/demo',
// 【适用范围】admin=仅后台使用 / index=仅前台使用 / all=全模块通用
'scope' => 'admin',
// 【插件品类】free=免费版 / basic=基础版 / pro=专业付费版
'classify' => 'free',
// 【文档地址】填写文档/知识库链接,无文档留空
'domain' => '',
// 【开源协议】标注版权协议,内部项目可自定义填写内部专用
'licence' => 'Apache-2.0',
// 【补充备注】填写使用注意事项、特殊说明、限制条件,运营/维护查看
'remark' => ''
];
declare (strict_types=1);
namespace addons\demo\controller;
use tsaotai\addons\BaseController;
class Demo extends BaseController
{
// 插件首页
public function index()
{
// 分配变量到视图
$this->assign('name', 'TsaoTai');
// 渲染视图(自动定位到 view/demo/index.html)
return $this->fetch();
}
// API 接口示例
public function api()
{
return json(['code' => 1, 'msg' => 'success', 'data' => []]);
}
}
declare (strict_types=1);
namespace addons\demo\controller;
use tsaotai\addons\PluginController;
class Plugin extends PluginController
{
// 自定义安装逻辑
public function install(): \think\response\Json
{
// 你的安装代码,比如建表、初始化数据
// ...
return parent::install();
}
// 自定义卸载逻辑
public function uninstall(): \think\response\Json
{
// 你的卸载代码
// ...
return parent::uninstall();
}
// 插件设置页面
public function setting()
{
return $this->fetch();
}
}
use think\facade\Route;
// 插件自定义路由示例
Route::get('demo/api/list', 'addons\demo\controller\Demo@list');
// 配置文件:config.php
// 公共函数:common.php
// 请求绑定:request.php
// 服务文件:service.php
// 依赖注入:provider.php
// 事件监听:event.php
// 中间件:middleware.php
// 获取插件管理器
$addons = addons();
// 获取单个插件信息
$demo = addons('demo');
// 生成插件 URL
$url = addons_url('demo/index');
// 相当于 url('addons/demo/index')
// 渲染插件视图
return addons_view('demo/index/index', $vars);
// 获取插件根目录
$path = addons_path();
// 获取指定插件目录
$demoPath = addons_path('demo');
// 获取插件下的文件
$pluginConfig = addons_path('demo/plugin.php');
use tsaotai\addons\facade\Addons;
// 获取所有插件信息
$addons = Addons::getAddons();
// 扫描插件目录
$addons = Addons::scanAddons();
// 创建新插件
Addons::create('demo', ['title' => '示例插件']);
bash
# 创建基本插件
php think addon:make demo
# 或者这个
php think plugin:make demo
# 原来的命令也能用
php think make:addon demo
bash
php think addon:make demo --title="示例插件" --description="这是一个示例插件" --author="教员" --plugin-version="2026.1.1"