jp3cki / uuid
v4.0.1
2024-05-12 20:47 UTC
Requires
- php: >= 8.1
- php-64bit: >= 8.1
- ext-hash: *
- ext-pcre: *
- arokettu/random-polyfill: ^1.0.2
- paragonie/constant_time_encoding: ^2.7.0 || ^3.0.0
- symfony/polyfill-php82: ^1.29.0
Requires (Dev)
README
简单的UUID和ULID实现。
UUIDv6、v7和v8基于草案实现。
要求
- PHP ≥ 8.1 (64位)
- 基本扩展
- PCRE (preg)
- Hash
安装
$ composer.phar require jp3cki/uuid
使用
基于时间戳的UUID(版本1、6、7)
<?php declare(strict_types=1); use jp3cki\uuid\Uuid; require_once(__DIR__ . '/vendor/autoload.php'); // composer autoloader echo Uuid::v1() . "\n"; // outputs: 171f5526-f910-11ed-88b6-ea8c2b49d6b3 echo Uuid::v1('08:00:2b:01:02:03') . "\n"; // outputs: 171f6804-f910-11ed-bae3-08002b010203 // Sortable version of UUIDv1 echo Uuid::v6() . "\n"; // outputs: 1edf9101-71f6-69a8-9474-0ea6f6ebdfa1 echo Uuid::v6('08:00:2b:01:02:03') . "\n"; // outputs: 1edf9101-71f6-6a7a-a7fb-08002b010203 // Sortable and no host information echo Uuid::v7() . "\n"; // outputs: 01884666-7e1c-7cc2-a6e0-34adc6d76b52
基于随机的UUID(版本4,即GUID)
<?php declare(strict_types=1); use jp3cki\uuid\Uuid; require_once(__DIR__ . '/vendor/autoload.php'); // composer autoloader echo Uuid::v4() . "\n"; // outputs: 4c9d5550-f58e-4259-ba00-5e59b15895a0
基于哈希的UUID(版本3或5)
<?php declare(strict_types=1); use jp3cki\uuid\Uuid; use jp3cki\uuid\NS as UuidNS; require_once(__DIR__ . '/vendor/autoload.php'); // version 3, MD5 echo Uuid::v3(UuidNS::dns(), 'www.example.com') . "\n"; // output: 5df41881-3aed-3515-88a7-2f4a814cf09e // version 5, SHA-1 echo Uuid::v5(UuidNS::dns(), 'www.example.com') . "\n"; // output: 2ed6657d-e927-568b-95e1-2665a8aea6a2
预定义UUID(用于"命名空间")
jp3cki\uuid\NS::nil()
:00000000-0000-0000-0000-000000000000
jp3cki\uuid\NS::dns()
:6ba7b810-9dad-11d1-80b4-00c04fd430c8
jp3cki\uuid\NS::url()
:6ba7b811-9dad-11d1-80b4-00c04fd430c8
jp3cki\uuid\NS::oid()
:6ba7b812-9dad-11d1-80b4-00c04fd430c8
jp3cki\uuid\NS::x500()
:6ba7b814-9dad-11d1-80b4-00c04fd430c8
基于哈希的UUID(版本8,sha2-256)
<?php declare(strict_types=1); use jp3cki\uuid\Uuid; use jp3cki\uuid\NS as UuidNS; require_once(__DIR__ . '/vendor/autoload.php'); echo Uuid::sha256(UuidNS::dns(), 'www.example.com') . "\n"; // output: 401835fd-a627-870a-873f-ed73f2bc5b2c
用户定义格式的UUID(版本8)
<?php declare(strict_types=1); use jp3cki\uuid\Uuid; require_once(__DIR__ . '/vendor/autoload.php'); // Returns an arbitrary 128-bit (16-octet) binary, adjusted to match UUIDv8. echo Uuid::v8(str_repeat(chr(0x00), 16)) . "\n"; // output: 00000000-0000-8000-8000-000000000000 // You can also give a random number sequence, but you should use UUIDv4. echo Uuid::v8(random_bytes(16)) . "\n"; // output: bfc47fb7-948f-8833-87e0-cae07c85d30d echo Uuid::v4() . "\n";
ULID
<?php declare(strict_types=1); use jp3cki\uuid\Ulid; require_once __DIR__ . '/vendor/autoload.php'; echo (new Ulid()) . "\n";
许可证
在MIT许可证下。
请参考LICENSE文件。
重大变更
-
v4.0.0
- 最低要求更改为PHP 8.1。
-
v3.0.0
-
最低要求更改为PHP 8.0。
-
PHP引擎执行严格的类型检查。
-
-
v2.0.0
-
此库不再与PHP的32位版本兼容。
-
所有公共类均标记为
final
。您不允许从该库继承类。 -
现在显式指定参数类型。我相信大多数用户不会受到影响,但如果您使用错误类型的变量调用它,可能会得到意外结果。
-
-
v1.0.0
- 最低要求更改为PHP 7.0