承接 adminmatrix/matrix_plugin 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

adminmatrix/matrix_plugin

Composer 安装命令:

composer require adminmatrix/matrix_plugin

包简介

插件

README 文档

README

adminmatrix/matrix_plugin 是一个基于 ThinkPHP 8.1+ 的轻量插件系统,提供:

  • 插件目录自动创建(安装/更新 composer 后自动生成 plugins/
  • 插件脚手架(快速生成插件目录结构与示例控制器)
  • 插件安装/卸载命令(支持依赖安装、数据库迁移)
  • 插件迁移命令(create/run/rollback/status)
  • 插件列表查询

该包会通过 composer.json -> extra.think.services 自动注册服务:adminmatrix\plugin\Service,用于加载命令与插件初始化能力。

运行环境

  • PHP: ^8.3
  • ThinkPHP: ^8.1(topthink/framework

安装

在你的 ThinkPHP 项目根目录(有 think 命令的目录)执行:

composer require adminmatrix/matrix_plugin

安装完成后,会自动执行脚本创建插件目录:

  • plugins/

对应脚本:adminmatrix\plugin\Scripts::createPluginsDir(composer post-install-cmd / post-update-cmd)。

插件目录结构

默认插件目录位于项目根目录:

plugins/
  demo/
    controller/
    model/
    service/
    common.php
    event.php
    middleware.php
    module.json

其中:

  • module.json:插件元信息(名称、版本、作者、安装状态等)
  • common.php:插件公共函数/辅助方法(会在插件加载时自动 include)
  • event.php:插件事件监听定义(加载时自动注册)
  • middleware.php:预留插件中间件定义(是否启用取决于你的应用集成方式)

创建插件(脚手架)

使用命令创建一个插件(会生成目录与基础文件):

php think plugin:make demo

该命令会在 plugins/demo/ 下生成基础结构,并创建一个示例控制器(通常为 IndexIndexController,取决于 route.controller_suffix 配置)。

生成的命名空间规则:

  • 插件 demo 的根命名空间为:plugins\demo
  • 控制器命名空间为:plugins\demo\controller

插件列表

查看当前 plugins/ 下所有插件及安装状态:

php think plugin:list

会读取每个插件的 module.json 并以表格形式输出:

  • 插件标识(目录名)
  • 插件名称
  • 版本号
  • 描述
  • 作者
  • 安装状态(已安装/未安装)
  • 插件类型(module.jsontype 字段)

安装插件

安装逻辑依赖插件目录下的配置文件与迁移文件。

执行:

php think plugin:install --plugin=demo
# 或
php think plugin:install -p demo

安装过程主要包含:

  1. 读取 plugins/demo/config.json(注意:当前版本安装命令读取的是 config.json
  2. 检查是否需要安装 composer 依赖(插件目录存在 composer.json 时)
  3. 检查是否存在数据库迁移(plugins/demo/database/migrations/*.php
  4. 执行依赖安装、迁移运行等步骤

备注:plugin:install 内部会尝试执行迁移命令(示例里写死了命令字符串),你可以根据项目需要进行二次集成/修正。

数据库迁移(Migrate)

该包提供一组迁移相关命令(以实际注册为准):

  • plugin:migrate_create(创建迁移文件)
  • plugin:migrate_run(执行迁移)
  • plugin:migrate_rollback(回滚迁移)
  • plugin:migrate_status(查看迁移状态)

你可以通过 ThinkPHP 命令列表确认:

php think list | findstr plugin

运行时加载(HTTP 请求进入插件)

该包内置 adminmatrix\plugin\Service,在 register() 中会根据请求参数尝试将请求路由到 plugins/{plugin}/...

典型思路(按当前代码实现):

  • 当请求参数 s/app 开头时,匹配路由 app/:any
  • :any 用作插件名(例如 demo
  • 动态切换:
    • appPath => plugins/{demo}/
    • namespace => plugins\{demo}
    • runtimePath => runtime/plugins/{demo}
  • 自动加载插件的 common.php
  • 自动注册插件 event.php 中声明的事件
  • 根据 URL 解析出控制器/方法并调用

注意:要让 plugins\demo\controller\IndexController 能被 class_exists() 正确加载,通常需要确保插件命名空间与自动加载机制匹配(例如通过 Composer PSR-4 或框架自定义 Loader)。

插件 module.json 说明

plugin:make 会生成 module.json,示例:

{
  "name": "Demo",
  "alias": "demo",
  "description": "demo 插件 ,由系统创建",
  "version": "1.0.0",
  "author": "系统创建",
  "type": 1,
  "keywords": [],
  "priority": 0,
  "service": [],
  "files": [],
  "status": false
}

字段含义(约定):

  • alias:插件标识(一般与目录名一致)
  • status:是否安装启用(plugin:list 会展示,运行时也可能据此拦截)
  • service / files:预留扩展(按你的业务自行定义加载策略)

常见问题(FAQ)

1)访问不存在页面变成 200 空响应?

如果你用 route->rule('app/:any', function(){}) 这种“兜底闭包路由”拦截请求,但没有返回/抛异常,会导致 200 空响应。

建议在兜底时显式:

abort(404);

或把“判断是否进入插件”的逻辑放到中间件,而不是闭包兜底路由。

2)class_exists("plugins\demo\controller\IndexController") 为 false?

说明插件目录未纳入自动加载范围。通常需要:

  • 确保命名空间使用反斜杠:plugins\\demo
  • 并在项目 composer.json 中加入:
{
  "autoload": {
    "psr-4": {
      "plugins\\": "plugins/"
    }
  }
}

然后执行:

composer dump-autoload

License

MIT

adminmatrix/matrix_plugin 适用场景与选型建议

adminmatrix/matrix_plugin 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 23 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 10 月 24 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 adminmatrix/matrix_plugin 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 adminmatrix/matrix_plugin 我们能提供哪些服务?
定制开发 / 二次开发

基于 adminmatrix/matrix_plugin 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 23
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 7
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-10-24