Skip to content

04 插件系统 ​

欢迎加入 插件 / 主题制作团队:QQ 群入口(后台「插件管理」页亦有同款按钮)。

支持的插件类型 ​

定义于 PluginService::TYPES:

type用途基类
addon功能扩展(日志、通知等)app\common\lib\Plugin
gateway支付网关GatewayPlugin → GatewayInterface
sms短信驱动SmsPlugin → SmsDriverInterface
mail邮件驱动MailPlugin → MailDriverInterface
certification实名认证CertificationPlugin → RealnameProviderInterface
server / reserver / oauth魔方兼容目录Plugin

生命周期 ​

上传/市场安装 → 磁盘有文件 → 后台「安装」→ install() → kd_addons 登记 → enable
启用 → 加载 hooks.php
停用 → status=0,钩子不再加载
卸载 → uninstall() → 删除 kd_addons

主类必须实现的方法(按需) ​

php
public function install()    // 建表等,返回 true/false
public function uninstall()  // 删表等
public function enable()     // 启用时
public function disable()    // 停用时

配置读写继承自 Plugin::getConfig() / setConfig(),合并 config.php 与数据库。


手把手教程:请先读 04a 插件开发详细教程(含完整示例与排错)。系统已内置 public/plugins/addon/hello_world/。

最小 addon 示例 ​

目录 public/plugins/addon/hello_world/

HelloWorld.php

php
<?php
namespace addon\hello_world;

use app\common\lib\Plugin;

class HelloWorld extends Plugin
{
    public $info = [
        'name'        => 'HelloWorld',
        'title'       => 'Hello 示例',
        'description' => '演示插件',
        'author'      => 'Your Name',
        'version'     => '1.0.0',
    ];

    public function install() { return true; }
}

hooks.php

php
<?php
add_hook('after_user_register', function ($param) {
    // 用户注册后逻辑
});

config.php

php
<?php
return ['enabled' => 1];

钩子注册 ​

全局函数(app/common.php):

php
add_hook('hook_name', callable $fn, int $priority = 50);
run_hook('hook_name', $params);

触发时使用 CamelCase 或 snake_case 均可,例如:

  • HookService::trigger('UserLogin', ...) 同时匹配 user_login
  • 魔方别名:AfterInvoicePaid → order_paid

常用钩子见 11-hooks。


对接 API(完整版) ​

全量 HTTP / 驱动 / 魔方兼容 / 自定义 REST 已独立成册:
04b 插件对接 API(含参数、响应形状、检查清单)

常用速查(权限模块:plugin):

接口说明
GET /admin/addon/index?type=addon|all扫描本地插件
POST /admin/addon/install · uninstall · enable · disable生命周期
GET /admin/addon/config · POST .../saveConfig读写配置(含 _fields)
GET /admin/addon/menus · GET .../page侧栏菜单 / 宿主页
/admin/marketplace/*市场目录与安装(见 04b §3)

与业务系统集成 ​

能力接入方式文档
支付GatewayInterface,驱动键 plugin:{name}04b §6 · 06
短信/邮件对应 Interface,后台通知设置选驱动04b §7 · 08
实名RealnameProviderInterface,选 plugin:{name}04b §8 · 07
自定义 RESTroute.php 或 app/{home|admin}/controller04b §5
魔方 URL/gateway/* · /console/module/*04b §9

从市场 / 压缩包安装 ​

插件有两种安装方式,详见 05-marketplace:

方式场景
压缩包安装生产、内网:解压到 public/plugins/,在 本地插件 Tab 安装
开发环境安装配置 MARKETPLACE_SERVER,在 插件市场 Tab 一键安装

不支持插件市场离线部署;生产环境请勿依赖 resources/marketplace/packages/。


下一章:04a 插件开发详细教程 · 04b 插件对接 API · 05-marketplace

可得财务 © 2026