lootils / uuid
用于处理UUID的简单类。
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: *
- satooshi/php-coveralls: 0.6.*
This package is not auto-updated.
Last update: 2024-09-14 12:42:52 UTC
README
这个PHP库是Lootils项目的一部分,用于创建和验证符合RFC 4122标准的版本3、4和5的UUID。
有关UUID的更多信息,请参阅
UUID版本
此库支持3种UUID版本。
- 版本3:基于命名空间和名称生成的UUID。内部使用MD5哈希。 注意:版本5比版本3更受欢迎。
- 版本4:随机UUID。
- 版本5:基于命名空间和名称生成的UUID。内部使用sha1哈希。
用法
强烈建议阅读uuid.php中的代码注释,因为它们有很好的文档。阅读测试可能也有帮助,因为其中包含示例。
验证UUID格式
$valid = \Lootils\Uuid\Uuid::isValid($foo); // $valid will be a bool if it is valid or not.
UUID对象
UUID对象可以通过其构造函数创建,但通常应该通过UUID::createV3、UUID::createV4、UUID::createV5中的某个版本生成器来实现。
一旦创建了一个对象,就有许多方法可以使用。它们包括
- listFields:列出可用的字段。
- getField:返回传入字段名的值。
- getVersion:如果已知,返回UUID版本(3、4或5)。
- getNamespace:如果已知,返回用于生成UUID的命名空间。
- getName:如果已知,返回用于生成UUID的名称。
- getURN:返回UUID的URN。
如果您打印uuid,您将得到一个字符串。例如
$uuid = \Lootils\Uuid\Uuid::createV4();
print $uuid; // This will display the UUID in the format 6ba7b810-9dad-11d1-80b4-00c04fd430c8.
如果您不使用其中一个工厂,您可以使用以下参数创建一个对象
$uuid = new \Lootils\Uuid\Uuid($uuid, $version, $namespace, $name);
参数的形式为
-
$uuid:可以以4种格式提供的UUID。
- 作为格式为'{6ba7b810-9dad-11d1-80b4-00c04fd430c8}'的十六进制字符串。
- 通过格式为'urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8'的URN。
- 通过格式为array('35e872b4', '190a', '5faa', 'a0', 'f6', '09da0d4f9c01')的数组。
- 通过一个键是字段名的数组,如listField方法中看到的。
-
$version:如果已知,版本可以是Uuid::V3、Uuid::V4、Uuid::V5。
-
$namespace:对于v3和v5,如果已知,则是用于生成UUID的命名空间。
-
$name:对于v3和v5,如果已知,则是用于生成UUID的名称。
创建随机UUID
$uuid = \Lootils\Uuid\Uuid::createV4(); // $uuid is now a random UUID.
创建v5 UUID
$uuid = \Lootils\Uuid\Uuid::createV5(\Lootils\Uuid\Uuid::URL, 'http://example.com/foo.html');
验证v5 UUID
如果您知道v5 UUID的命名空间和名称,您可以重新创建和验证它。使用相同的命名空间和名称创建的UUID始终相同。例如
$uuid1 = \Lootils\Uuid\Uuid::createV5(\Lootils\Uuid\Uuid::URL, 'http://example.com/foo.html');
$uuid2 = \Lootils\Uuid\Uuid::createV5(\Lootils\Uuid\Uuid::URL, 'http://example.com/foo.html');
在这种情况下,$uuid1等于$uuid2。
创建v3 UUID
$uuid = \Lootils\Uuid\Uuid::createV3(\Lootils\Uuid\Uuid::URL, 'http://example.com/foo.html');
验证v3 UUID
如果您知道v3 UUID的命名空间和名称,您可以重新创建和验证它。使用相同的命名空间和名称创建的UUID始终相同。例如
$uuid1 = \Lootils\Uuid\Uuid::createV3(\Lootils\Uuid\Uuid::URL, 'http://example.com/foo.html');
$uuid2 = \Lootils\Uuid\Uuid::createV3(\Lootils\Uuid\Uuid::URL, 'http://example.com/foo.html');
在这种情况下,$uuid1的UUID十六进制字符串值等于$uuid2。
创建自定义命名空间
如果您想为您的应用程序创建自定义命名空间(如URL和DNS),可以使用v3或v5方法和NIL命名空间来实现。例如
$namespace = \Lootils\Uuid\Uuid::createV5(\Lootils\Uuid\Uuid::NIL, 'my_app_name');
许可
本库由Matt Farina编写,并可在MIT许可证下使用。