Hashids / PHP + Rust

把自增 ID 藏起来六框架共用内核

短码编解码、多连接与六框架原生接线,核心不依赖任何框架。

方块宠物哈希迪,hashids 的项目宠物

一个内核,六种接法

核心层只做多连接解析与实例构建,不依赖任何框架;connection() 按需构建并缓存,未指定连接时经 __call() 转发到默认连接。

六个框架适配类合计约 490 行,只负责容器绑定与配置读取;Laravel 的 Facade 与配置格式对齐 vinkla/hashids。

  • 多连接与默认连接
  • encode / decode
  • 容器绑定与配置发布
6框架适配
v1.3.0当前版本
12语言译文
方块宠物哈希迪 的 微笑 表情

哈希迪 Hashy

一只圆角方块造型的蓝绿色小宠物,头顶天线,胸前有井号徽记,身旁气泡显示编码结果 3kTMd。

把数据库自增 ID 换成短小、不可猜测的字符串

从编解码到框架接线

六个能力分组,围绕同一个零框架依赖内核。

短码编解码

encode、decode 与十六进制编解码经 __call 落到默认连接。

多连接管理

按 Salt 与 Length 配置多套连接,connection() 切换,构建一次即缓存。

六框架接入

Laravel、Webman、ThinkPHP、Hyperf、Yii2、Yii3 各有原生接线。

vinkla 对齐

Facade、容器绑定与配置形状对齐 vinkla/hashids,可平滑替换。

零框架依赖

核心只依赖 hashids/hashids,new HashidsManager 即可独立工作。

十二语言文档

README 与架构图同步 12 种译文,接入前先看懂全貌。

同一能力,Rust 版本

PHP 版之外,也可以用 Rust 原生实现同一套短 ID 能力。

Rust v2.0.0 Rust 1.85 / crate

hashids-rust

短 ID 的 Rust 原生实现

原生实现 hashids 算法,与官方测试向量一致,默认 feature 零第三方依赖,并适配八个 Rust Web 框架。

  • 官方测试向量一致
  • 默认零第三方依赖
  • 八个 Web 框架适配
查看 Rust 仓库

功能是这样长出来的

从 API 对齐到真实框架契约测试,每一步都有发布记录。

v1.3.0

Yii 2 与 Yii 3 落地

新增 Yii 2、Yii 3 适配,并把文档同步到 12 种语言与三张架构图。

v1.2.5

真实框架契约测试

给 Laravel 补上真实框架契约测试,拆开两个互相冲突的 CI 作业。

v1.2.4

Install 端到端覆盖

补上 Install 的端到端契约测试,堵住替身测试的最后一块盲区。

v1.2.0

两处致命缺陷修复

修复 Webman 覆盖配置与 Hyperf 配置模型,新增对齐 vinkla 的 API。

版本日志

最近的发布记录,完整列表在 GitHub Releases。

最新 v1.3.0 全部版本
v1.3.02026-09-29

新增 Yii 2、Yii 3 适配,文档同步 12 种语言。

v1.2.52026-09-25

Laravel 真实框架契约测试,拆开冲突的 CI 作业。

v1.2.42026-09-25

补上 Install 端到端契约测试,堵住替身盲区。

v1.2.32026-09-25

修复 Hyperf 契约作业缺少协程扩展的 CI 缺口。

v1.2.22026-09-25

补真实框架契约测试,修正 Webman 插件开关。

v1.2.12026-09-25

补齐运行环境与安全说明,修正 composer suggest。

安装与使用

先安装,再跑一个最小示例。

PHP >= 8.0完整 README
安装
composer require erikwang2013/hashids
最小示例
use Erikwang2013\Hashids\HashidsFactory;
use Erikwang2013\Hashids\HashidsManager;

$manager = new HashidsManager(
    require __DIR__ . '/config/hashids.php',
    new HashidsFactory()
);

$hash = $manager->encode(1, 2, 3);
$ids = $manager->decode($hash);

哈希迪的十二种表情

鼠标停一停,它会换一种心情。

搜索本站

输入关键词,例如“上传”“迁移”“JWT”。