theday-seeyou / web-base-core
Reusable ThinkPHP administration core for WebBase
Requires
- php: >=8.1
- ext-curl: *
- ext-fileinfo: *
- ext-gd: *
- ext-iconv: *
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
- ext-zlib: *
- symfony/process: ^6.0|^7.0
- topthink/framework: ^8.0
- topthink/think-migration: ^3.0
- topthink/think-orm: ^3.0
Requires (Dev)
- phpunit/phpunit: ^10.0|^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
theday-seeyou/web-base-core 是 WebBase 的可复用 ThinkPHP 后台核心包,
提供控制器、模型、查询助手、RBAC、队列、存储和运行时服务。
本包只包含通用后台基础设施,不包含动态内容模型设计器、页面搭建、 模板协议、模板市场或企业站内容产品能力。
安装
发布到 Packagist 后:
composer require theday-seeyou/web-base-core php think service:discover
安全行为
- 本包不是 Composer plugin。
- Composer 安装和更新不会写入项目的
app/、config/、database/或public/。 - 包内不携带 Windows 可执行文件。
webbase:publish只能由开发者显式运行。webbase:publish默认跳过已有文件,只有显式--force才覆盖。- 发布命令不会自动删除旧迁移文件。
- 文件复制默认不覆盖目标文件,也不会删除来源文件。
- HTTP/HTTPS 默认校验证书,并禁止跳转到本地文件等非网络协议。
- 加密数据使用 AES-256-GCM,同时保留旧 AES-CBC 密文的只读兼容。
命名空间
use WebBase\Core\Controller; use WebBase\Core\BaseModel; use WebBase\Core\Model; use WebBase\Core\service\AdminService;
默认软删除与回收站
0.5 系列统一使用自增 id 和 DATETIME 类型的 created_at、updated_at、deleted_at。
Model 自动写入创建和更新时间,BaseModel 在此基础上默认开启软删除。
deleted_at datetime null default null 是唯一删除字段,框架不检测也不兼容其他删除字段。
本版本面向全新安装,不提供旧时间字段或 MD5 账号转换。
final class Article extends BaseModel { } Article::mQuery(); // 仅正常数据,自动添加 deleted_at IS NULL Article::mRecycleQuery(); // 仅回收站数据 Article::mAllQuery(); // 正常数据和回收站数据 Article::mDelete(); // 软删除 Article::mRestore(); // 恢复 Article::mForceDelete(); // 从回收站永久删除
系统用户、角色、菜单、字典和附件记录默认继承 BaseModel。角色授权节点只在永久删除
角色时清理,回收和恢复保留原授权。用户序列化隐藏密码哈希。队列、操作日志、配置和
内部关联记录使用 Model,由明确的维护操作物理清理。
Starter 的 migrate:create 默认使用本包的迁移模板。也可以手动继承
WebBase\Core\migration\Migrator,通过以下方法创建表:
$this->createTable('articles') ->addColumn('title', 'string', ['limit' => 200]) ->create();
createTable() 默认添加 BIGINT UNSIGNED 自增主键,以及创建、更新、删除时间字段,
并为 deleted_at 建索引。创建和更新时间非空,默认使用 CURRENT_TIMESTAMP;
更新时间同时使用 ON UPDATE CURRENT_TIMESTAMP,覆盖查询构造器和原生 SQL 的更新。
删除时间可空且默认为 NULL。创建已有表会报错,修改表使用 table()->...->update()。
数据库操作仅在显式执行迁移时发生。
密码使用 password_hash / password_verify 验证 bcrypt,长度为 12–72 字节。
保留 bcrypt 成本参数更新,不识别或升级旧 MD5 密码。
开发
composer install composer validate --strict vendor/bin/phpunit composer audit
普通单元测试不要求数据库。需要运行数据库集成测试时,显式配置:
set WEBBASE_TEST_DB_HOST=127.0.0.1 set WEBBASE_TEST_DB_PORT=3306 set WEBBASE_TEST_DB_NAME=webbase_test set WEBBASE_TEST_DB_USER=root set WEBBASE_TEST_DB_PASSWORD=your-password vendor/bin/phpunit
PowerShell 使用 $env:WEBBASE_TEST_DB_NAME = "webbase_test" 形式设置环境变量。
许可证
项目自身修改使用 MIT License。衍生代码的原始版权声明见 THIRD_PARTY_NOTICES.md。