ID 生成器

v1.5.0 2018-12-19 21:48 UTC

This package is auto-updated.

Last update: 2024-09-12 08:43:51 UTC


README

Build Status PHP 7.2+ PHP version

一个用于生成 ID 的库。

对象 ID

如果您的对象 ID 足够长,则可以在多个系统中生成,无需担心冲突。使用基于时间的桶为我们每个新 ID 提供局部性。

ID 的前半部分是桶。桶是两个 Unix 时间戳之间的差值。第一个时间戳是当前年份的开始,第二个时间戳是调用方法的时间。这比只使用当前时间戳更有效率。这样我们会有更多的桶。

ID 的后半部分使用 random_bytes 函数。然后使用 base 64 安全编码。我们移除了任何对 URL 不安全的字符。

用法

以下示例生成了 5,000 个对象 ID。

<?php

require 'vendor/autoload.php';

use Bulldog\id\ObjectId;

$id = new ObjectId;

for($i=0; $i<5000; $i++) {
    var_dump($id->get(12));
}

增量 ID

您可以使用多个 ID 创建一个 base64 编码的增量 ID。您可能想使用用户的 ID 和关系数据库中的另一个主键来创建一个唯一的增量 ID。

用法

以下示例将每次生成相同的字符串。

<?php

require 'vendor/autoload.php';

use Bulldog\id\IncrementalId;

$id = new IncrementalId;

var_dump($id->create(4, 'dog', 9));
// Output: NAZG9nOQ

var_dump($id->get(4));
// Output: NAZG