普通/uid

用于使用和生成通用唯一标识符的库。

1.0.0 2023-02-08 17:51 UTC

This package is auto-updated.

Last update: 2024-09-13 02:08:25 UTC


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 之间。