pw / uuid-v4
RFC 4122 UUID版本4(变体1)数据类型的实现
1.0.1
2018-06-12 11:31 UTC
Requires
- php: >=7.1.0
Requires (Dev)
- infection/infection: ^0.8
- phpstan/phpstan: ^0.7
- phpunit/phpunit: ^6.1
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-09-29 02:13:35 UTC
README
实现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