📚 ThinkLibrary

Latest Stable VersionLatest Unstable VersionTotal DownloadsMonthly DownloadsDaily DownloadsPHP VersionLicense

ThinkLibraryThinkAdmin 的核心基础库,当前 composer.json 要求 PHP >=7.1,并声明兼容 topthink/framework ^6.0|^8.0|*。它提供后台控制器、模型快捷方法、Helper、存储、队列、运行配置、插件注册、权限校验、命令和常用扩展工具,不是独立业务插件,通常作为 ThinkAdmin 与各应用插件的基础依赖使用。

功能说明

  1. 后台控制器与模型基类

    • 功能:提供 think\admin\Controllerthink\admin\Model 等基类。
    • 覆盖范围:统一 JSON 响应、视图渲染、表单令牌、当前节点、模型快捷方法等基础能力。
  2. Helper 快捷逻辑器

    • 功能:提供 QueryHelperFormHelperSaveHelperDeleteHelperValidateHelperTokenHelper 等常用处理器。
    • 覆盖范围:用于列表查询、分页输出、表单处理、数据保存、软硬删除、输入验证和表单令牌处理。
  3. 文件存储抽象

    • 功能:提供统一的 Storage 入口和多种存储实现。
    • 覆盖范围:包含本地存储、阿里云 OSS、腾讯云 COS、七牛云、又拍云、Alist 等存储适配。
  4. 异步队列与命令支持

    • 功能:提供 QueueServicethink\admin\Queuethink\admin\Commandxadmin:queue 等基础能力。
    • 覆盖范围:支持任务注册、任务执行、进度消息、失败记录和命令行进程管理。
  5. 系统服务

    • 功能:提供后台登录权限、菜单过滤、节点解析、运行配置、模块信息、验证码、接口网关等服务。
    • 覆盖范围:对应 AdminServiceMenuServiceNodeServiceRuntimeServiceModuleServiceCaptchaServiceInterfaceService 等类。
  6. 插件注册基类

    • 功能:提供 think\admin\Plugin 抽象基类。
    • 覆盖范围:记录插件编码、路径、命名空间、服务类、安装包,并要求后台插件实现静态 menu() 方法。
  7. 数据库迁移辅助

    • 功能:提供 PhinxExtend 辅助生成和执行 ThinkAdmin 风格的迁移脚本。
    • 覆盖范围:支持表结构升级、索引同步、菜单写入,以及 xadmin:package 从 MySQL 生成结构/数据安装脚本。
  8. 常用扩展工具

    • 功能:提供编码、数据、Excel、HTTP、JWT、图片验证码、虚拟模型等扩展类。
    • 覆盖范围:对应 CodeExtendDataExtendExcelExtendHttpExtendJwtExtendImageVerifyVirtualModel 等类。
  9. 全局函数

    • 功能:通过 src/common.php 注册 ThinkAdmin 常用函数。
    • 覆盖范围:包括权限判断、系统配置、系统数据、运行状态、URL、队列、存储访问等快捷函数。

当前注册命令

ThinkLibrary 服务类 think\admin\Libraryboot() 中注册以下命令:

  • xadmin:queue [stop|start|status|query|listen|clean|dorun|webstop|webstart|webstatus]
  • xadmin:package [--all] [--force] [--table=...] [--backup=...]
  • xadmin:sysmenu
  • xadmin:publish [--force] [--migrate]
  • xadmin:replace <search> <replace>
  • xadmin:database [repair|optimize]

命令职责建议按下面方式理解:

命令主要作用适用场景
xadmin:publish汇总服务、版本信息,发布应用资源,可带 --migrate 执行迁移Composer 安装/更新后重新生成运行所需文件
xadmin:queue启动、停止、查询、清理异步任务监听与任务执行后台队列和定时任务运行维护
xadmin:package从现有 MySQL 数据库生成结构或数据迁移脚本插件发布前整理数据库安装脚本
xadmin:sysmenu清理并重置系统菜单数据菜单迁移或插件菜单重置后的维护
xadmin:replace替换数据库字符字段内容域名、路径或历史文本批量替换
xadmin:database优化或修复数据库表运维维护,默认执行优化

xadmin:helper:modelxadmin:helper:index 不属于 ThinkLibrary,它们来自开发辅助插件 think-plugs-helper,建议只作为 --dev 依赖在开发环境使用。

参考项目

代码仓库

ThinkLibrary 遵循 MIT 开源协议发布,免费使用。部分代码来源于互联网,若有异议可联系作者删除。

加入我们

项目与插件源码统一在 ThinkAdminDeveloper 仓库维护,文档或代码问题建议在该仓库提交反馈。

使用说明

  1. 依赖管理:ThinkLibrary 需要 Composer 支持进行安装和依赖管理。
  2. 安装指南:使用以下命令安装 ThinkLibrary:
    composer require zoujingli/think-library
  3. 使用示例:在使用时,确保控制器继承自 think\admin\Controller
    <?php
    declare(strict_types=1);
    
    namespace app\admin\controller;
    
    use think\admin\Controller;
    use think\admin\helper\QueryHelper;
    use think\admin\model\SystemUser;
    
    /**
     * 示例控制器
     * @class Example
     * @package app\admin\controller
     */
    class Example extends Controller
    {
        /**
         * 数据列表
         * @auth true
         * @menu true
         */
        public function index()
        {
            // 使用 QueryHelper 进行数据查询(推荐使用模型方法)
            SystemUser::mQuery()->layTable(function () {
                $this->title = '数据管理';
            }, function (QueryHelper $query) {
                $query->where(['is_deleted' => 0]);
                $query->like('username,nickname')->equal('status');
            });
        }
    
        /**
         * 表单处理
         * @auth true
         */
        public function form()
        {
            // 使用 FormHelper 进行表单处理(推荐使用模型方法)
            SystemUser::mForm('form');
        }
    
        /**
         * 状态更新
         * @auth true
         */
        public function state()
        {
            // 使用 SaveHelper 进行数据状态更新(推荐使用模型方法)
            SystemUser::mSave($this->_vali([
                'status.require' => '状态值不能为空!',
                'status.in:0,1'  => '状态值范围异常!'
            ]));
        }
    
        /**
         * 列表数据后处理
         * @param array $data
         */
        protected function _index_page_filter(array &$data)
        {
            foreach ($data as &$vo) {
                // 对列表数据进行二次处理
                $vo['status_text'] = $vo['status'] ? '启用' : '禁用';
                $vo['create_time'] = date('Y-m-d H:i:s', strtotime($vo['create_at']));
            }
        }
    }

必要数据库表 SQL

这些表由后台管理插件迁移脚本创建,ThinkLibrary 本身不包含独立迁移脚本;这里只列出核心库常用服务依赖的基础表结构示例。

system_data 表:

CREATE TABLE `system_data` (
    `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(100) DEFAULT NULL COMMENT '配置名',
    `value` longtext COMMENT '配置值',
    PRIMARY KEY (`id`),
    KEY `idx_system_data_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统-数据';

system_oplog 表:

CREATE TABLE `system_oplog` (
    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    `node` varchar(200) NOT NULL DEFAULT '' COMMENT '操作节点',
    `geoip` varchar(15) NOT NULL DEFAULT '' COMMENT '操作者IP',
    `action` varchar(200) NOT NULL DEFAULT '' COMMENT '操作行为',
    `content` varchar(1024) NOT NULL DEFAULT '' COMMENT '操作内容',
    `username` varchar(50) NOT NULL DEFAULT '' COMMENT '操作人用户名',
    `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统-日志';

system_config 表:

CREATE TABLE `system_config` (
    `type` varchar(20) DEFAULT '' COMMENT '分类',
    `name` varchar(100) DEFAULT '' COMMENT '配置名',
    `value` varchar(500) DEFAULT '' COMMENT '配置值',
    KEY `idx_system_config_type` (`type`),
    KEY `idx_system_config_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统-配置';
最近更新:
Contributors: 邹景立, Anyon