lootils/uuid

用于处理UUID的简单类。

1.0.2 2013-11-15 13:39 UTC

This package is not auto-updated.

Last update: 2024-09-14 12:42:52 UTC


README

这个PHP库是Lootils项目的一部分,用于创建和验证符合RFC 4122标准的版本3、4和5的UUID。

Build Status Latest Stable Version Coverage Status

有关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许可证下使用。