普通 / uid
用于使用和生成通用唯一标识符的库。
1.0.0
2023-02-08 17:51 UTC
Requires
- php: ^8.2
- psr/clock: ^1.0
Requires (Dev)
- captainhook/captainhook: ^5.14
- captainhook/plugin-composer: ^5.3
- ordinary/clock: ^1.0
- overtrue/phplint: ^6.1
- phpunit/phpunit: ^9.6
- psalm/plugin-phpunit: ^0.18
- roave/security-advisories: dev-latest
- slevomat/coding-standard: ^8.8
- squizlabs/php_codesniffer: ^3.7
- vimeo/psalm: ^5.6
README
普通 UID 是生成通用唯一标识符的简单解决方案。
目录
入门
使用 composer 安装。
composer require ordinary/uid
使用生成器
require_once 'vendor/autoload.php'; $randomizer = new \Random\Randomizer(new \Random\Engine\Secure()); $clock = new \Ordinary\Clock\UTCClock(); $generator = new \Ordinary\UID\Generator($clock, $randomizer); var_dump($generator->generate(4)); var_dump($generator->generateCustom('external-id-1'))
特性
通用唯一性
生成的 ID 被认为是通用的,前提是没有两台机器会在同一时间生成具有相同随机字节的 UID。
基于时间
第一部分是从创建时间戳的十六进制表示。第二部分也是从创建时间戳的分数时间的十六进制表示
可排序
由于前两部分是时间的表示,UID 可以很容易地通过创建时间排序,通过按它们的字符串值排序。此外,如果使用自定义值生成 UID,自定义字节部分也可以排序,只要自定义值可以排序。
自定义时间精度
- 时间精度可以自定义,以使用毫秒、微秒或纳秒粒度。
- 默认为微秒精度(每秒 1,000,000 个 UID)
自定义唯一标识符
最后一部分包含转换为十六进制的字节(最大:15)。这可以用来添加自定义标识符,或者为 ID 添加额外的唯一性。
UID 接口方法
UIDInterface::value()
获取 UID 实例的字符串值。
UIDInterface::dateTime()
获取 UID 的 DateTimeImmutable 实例。
UIDInterface::timeSeconds()
获取 UID 的秒时间戳。
UIDInterface::timeFraction()
获取以精度确定的秒分数。
UIDInterface::timePrecision()
获取创建 UID 所使用的精度。
UIDInterface::custom()
获取 UID 的自定义字节。
UID 生成器方法
Generator::generate(int $customBytes)
使用给定数量的随机字节生成普通 UID。
Generator::generateCustom(string $custom)
使用给定的字节生成普通 UID。 $custom
可以是任何字符串,只要字节数在 1 到 15 之间。