Search by

theday-seeyou / web-base-core

theday-seeyou

Reusable ThinkPHP administration core for WebBase

Package info

github.com/theday-seeyou/web-base-core

pkg:composer/theday-seeyou/web-base-core

Statistics

Installs: 49

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

v0.5.1 2026-11-01 01:35 UTC

This package is auto-updated.

Last update: 2026-11-01 01:35:42 UTC


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。