webictbyleo/odoid
Composer 安装命令:
composer require webictbyleo/odoid
包简介
Deterministic mixed-radix ID encoding — maps integers to 6, 7, or 8-character alphanumeric strings. Ambiguous characters I, L, O excluded.
README 文档
README
Deterministic mixed-radix ID encoding. Maps a non-negative integer to a 6, 7, or 8-character alphanumeric string with a serial-number aesthetic.
use Webictbyleo\OdoID\OdoId; OdoId::encode(0, 6); // "0A0000" OdoId::encode(1234567, 6); // "0D7NM7" OdoId::encode(1234567, 7); // "0A15NM7" OdoId::encode(236223201279, 8); // "ZZ9ZZZZZ"
Features
- Deterministic — same integer + length always produces the same string, and vice-versa.
- Human-readable — ambiguous characters
I,L,Oare excluded from all positions. - Fixed positional structure — position 1 is always a letter, position 2 is always a digit.
- Zero dependencies — pure PHP standard library, PHP 8.1+.
Install
composer require webictbyleo/odoid
Usage
Encode
use Webictbyleo\OdoID\OdoId; OdoId::encode(0, 6); // "0A0000" OdoId::encode(1234567, 6); // "0D7NM7" OdoId::encode(1234567, 7); // "0A15NM7" OdoId::encode(236223201279, 8); // "ZZ9ZZZZZ" // Default length is 6 OdoId::encode(0); // "0A0000"
Decode
OdoId::decode("0D7NM7"); // 1234567 OdoId::decode("0d7nm7"); // 1234567 (lowercase accepted)
OdoIDGenerator
use Webictbyleo\OdoID\OdoIDGenerator; $g = new OdoIDGenerator(namespace: 'orders', length: 7); $result = $g->next(); // $result['id'] → e.g. "3H5NV2K" // $result['n'] → the raw integer // $result['length'] → 7 // $result['namespace'] → "orders"
Lengths and Capacity
| Length | Max integer (exclusive) |
|---|---|
| 6 | 230,686,720 |
| 7 | 7,381,975,040 |
| 8 | 236,223,201,280 |
Exceptions
All extend \InvalidArgumentException:
| Exception | When |
|---|---|
OdoOverflowException |
$n >= MAX[$length] |
UnsupportedLengthException |
length is not 6, 7, or 8 |
InvalidCharacterException |
character not in positional charset during decode |
use Webictbyleo\OdoID\OdoOverflowException; use Webictbyleo\OdoID\UnsupportedLengthException; use Webictbyleo\OdoID\InvalidCharacterException; try { OdoId::decode("0A000O"); } catch (InvalidCharacterException $e) { echo $e->char; // "O" echo $e->position; // 6 }
Run tests
composer install vendor/bin/phpunit
Monorepo
This repository is the Packagist-facing split of the PHP package from the Webictbyleo/odoid monorepo, which contains implementations in TypeScript, Python, Go, C#, Rust, Lua, and Java.
Specification
See SPEC.md for the full processing instruction document.
License
MIT
webictbyleo/odoid 适用场景与选型建议
webictbyleo/odoid 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 05 月 06 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「serial」 「id」 「encoding」 「deterministic」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 webictbyleo/odoid 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 webictbyleo/odoid 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 webictbyleo/odoid 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
integration of the Panda encoding services into the Symfony2 Framework
PHP Serial Shipping Container Code Generator
FileBundle manages uploads and manipulations of files for the Kitpages CMS Bundle
A PHP Framework that allows you to encode and decode arbitrary ASN.1 structures using the ITU-T X.690 Encoding Rules.
A PHP Library that allows you to decode ASN.1 CMS using Basic Encoding Rules (BER).
Generate serial number or random string that is very easy.
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 33
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-05-06