arokettu/uuid

UUID和ULID类

4.0.1 2024-07-28 22:10 UTC

README

Packagist PHP License Gitlab CI Codecov

PHP的UUID和ULID类。

安装

composer require arokettu/uuid
  • 在32位系统上强烈推荐安装GMP或Bcmath扩展。

使用

<?php

use Arokettu\Uuid\DceSecurity\Domains;
use Arokettu\Uuid\Namespaces\UuidNamespace;
use Arokettu\Uuid\UlidFactory;
use Arokettu\Uuid\UlidParser;
use Arokettu\Uuid\UuidFactory;
use Arokettu\Uuid\UuidParser;

// create UUIDs versions 1-8 and ULIDs
$uuid1 = UuidFactory::v1(); // example: 9a289f42-87ca-11ee-9f2b-41a3b4016a63
$uuid2 = UuidFactory::v2(Domains::PERSON, 1234); // example: 000004d2-ab4c-21ee-9700-47774c7dcdc1
$uuid3 = UuidFactory::v3(UuidNamespace::URL, 'http://example.com/'); // 773536a8-4b7b-383d-9106-697d4d366254
$uuid4 = UuidFactory::v4(); // example: 5c24b036-6202-419f-a1f3-48cbe6ebf17a
$uuid5 = UuidFactory::v5(UuidNamespace::URL, 'http://example.com/'); // 0a300ee9-f9e4-5697-a51a-efc7fafaba67
$uuid6 = UuidFactory::v6(); // example: 1ee771bd-9fb2-6000-b969-1334567890ab
$uuid7 = UuidFactory::v7(); // example: 01892370-4c48-70cf-9cb9-96784308f504
$ulid  = UlidFactory::ulid(); // example: 01H4HQC4G1C1606J19358PWESA

// get data like timestamps on UUIDs versions 1, 2, 6, 7 and ULIDs
$uuid7->getDateTime(); // 2023-07-05 00:25:09.448 +00:00

// parse existing UUID or ULID
$uuid  = UuidParser::fromString('01892370-4c48-70cf-9cb9-96784308f504'); // == $uuid7
$ulid2 = UlidParser::fromString('01H4HQC4G1C1606J19358PWESA'); // == $ulid

// possible killer features
// UUIDv1 to UUIDv6 conversion (and vice versa)
UuidParser::fromString('e982dc4e-1acc-11ee-be56-0242ac120002')
    ->toUuidV6(); // 1ee1acce-982d-6c4e-be56-0242ac120002
// ULID to UUIDv7 conversion (lossy but predictable)
UlidParser::fromString('01H4HQC4G1C1606J19358PWESA')
    ->toUuidV7(lossy: true); // 01892376-1201-704c-8348-2919516e3b2a

文档

请在此处阅读完整文档: https://sandfox.dev/php/uuid.html

也在Read the Docs上: https://arokettu-uuid.readthedocs.io/

支持

请在GitLab的主仓库中提交问题: https://gitlab.com/sandfox/php-uuid/-/issues

在Gitter的房间里自由提问: https://gitter.im/arokettu/community

许可证

该库在MIT许可证的条款下作为开源软件提供。