pw/uuid-v4

RFC 4122 UUID版本4(变体1)数据类型的实现

1.0.1 2018-06-12 11:31 UTC

This package is auto-updated.

Last update: 2024-09-29 02:13:35 UTC


README

Build Status codecov Maintainability Test Coverage License: MIT

实现RFC 4122 UUID版本4(变体1)数据类型。UUID代表通用唯一标识符。

目录

原因

我们已经在PHP中拥有全面的UUID库,例如 ramsey/uuid

我的目标是创建一个极简的UUID版本4规范实现。UUIDv4是随机生成的,这使得实现变得简单,只需要一个随机的种子值。

仅实现版本4的决定导致了一个小巧的功能库,该库捕获UUIDv4数据类型,几分钟内就可以理解。创建是通过一个纯函数实现的,该函数接受随机种子,并且可以轻松地进行测试。

要求

PHP 7.1+

安装

$ composer require pwm/uuid-v4

使用

从有效的字符串创建UUIDv4数据类型

$uuidV4String = '30313233-3435-4637-b839-616263646566';

$uuidV4 = new UuidV4($uuidV4String); // the data type

assert($uuidV4 instanceof UuidV4);
assert($uuidV4String === (string)$uuidV4);

从16字节随机种子创建随机的UUIDv4

$uuidV4 = UuidV4::createFrom(random_bytes(16));

assert($uuidV4 instanceof UuidV4);

从相同的种子生成相同的UUIDv4

$seed = random_bytes(16);

assert((string)UuidV4::createFrom($seed) === (string)UuidV4::createFrom($seed));

工作原理

UUID版本4在RFC 4122中定义为一个128位的序列,其中6位是固定的(4位用于版本,2位用于变体),剩下122位是随机生成的,用于熵。

UuidV4是一个只能从有效的UUIDv4字符串创建的简单数据类型。它包含一个createFrom()函数,该函数便于从16字节的随机种子创建随机UUIDv4。它与PHP的random_bytes()函数一起使用。

测试

$ vendor/bin/phpunit
$ composer phpcs
$ composer phpstan
$ composer infection

变更日志

点击这里

许可

MIT