Base Class and Interfaces¶
Base class¶
Arokettu\Uuid\AbstractUuid
class and Arokettu\Uuid\Uuid
interface.
Direct creation¶
The base constructor is inherited by most of the descendants. It accepts a string of lowercase hexadecimal digits (0-9, a-f):
<?php
use Arokettu\Uuid\GenericUuid;
// {12345678-9abc-def0-1234-56789abcdef0}
$uuid = new GenericUuid('123456789abcdef0123456789abcdef0');
Note
UuidParser::fromRfc4122()
and UuidParser::fromRfc4122()
can parse UUIDs/ULIDs in hex in case-insensitive manner.
Subclasses may also check the string for additional validity.
Conversion to Bytes¶
Added in version 1.2.0: toGuid()
Methods to convert UUID object to a byte sequence:
toBytes()
to the raw big-endian byte sequencetoGuidBytes()
to the Microsoft GUID mixed-endian byte sequence
Conversion to String¶
Added in version 2.1: toDecimal()
Methods to convert UUID object to string:
toString()
. Converts UUIDs to RFC 4122 and ULIDs to Base32.toRfc4122()
to RFC 4122 form. Example:"6ba7b811-9dad-11d1-80b4-00c04fd430c8"
toBase32()
to Base32. Example:"3BMYW137DD278R1D00R17X8C68"
toDecimal()
to decimal. Example:"143098242483405524118141958906375844040"
Note
toDecimal()
can be used to create OID representation of the UUID:
<?php
// add OID UUID prefix: 2.25
$oid = '2.25.' . $uuid->toDecimal(); // 2.25.143098242483405524118141958906375844040
Comparison¶
Methods to compare two UUID objects.
compare(): int
. Returns same thing as strcmp.equalTo(): bool
. In strict mode (by default) returns true if bytes and types of the two objects are equal. In non-strict mode compares only byte values.
<?php
use Arokettu\Uuid\UlidParser;
use Arokettu\Uuid\UuidParser;
$uuid = UuidParser::fromString('6ba7b811-9dad-11d1-80b4-00c04fd430c8');
$ulid = UlidParser::fromString('3BMYW137DD278R1D00R17X8C68');
var_dump($uuid->compare($ulid)); // 0
var_dump($uuid->equalTo($ulid)); // false
var_dump($uuid->equalTo($ulid, strict: false)); // true
Rfc4122Variant10xxUuid¶
Added in version 1.1.0.
Changed in version 1.2.0: renamed from Rfc4122Variant1Uuid to Rfc4122Variant10xxUuid
RFC 4122 Variant 10xx UUID versions (all except for Nil and Max) extend this interface. This interface is most useful to check that it is a standard based UUID as opposed to Nil, Max, ULID or unrecognized generic.
<?php
use Arokettu\Uuid\Rfc4122Variant10xxUuid;
use Arokettu\Uuid\UlidFactory;
use Arokettu\Uuid\UuidFactory;
$uuid = UuidFactory::v4();
var_dump($uuid instanceof Rfc4122Variant10xxUuid); // true
var_dump($uuid->getRfc4122Version()); // 4
$ulid = UlidFactory::ulid();
var_dump($ulid instanceof Rfc4122Variant10xxUuid); // false
Rfc4122Uuid¶
Changed in version 1.1.0: Now includes Nil and Max
All UUIDs mentioned in RFC 4122 and its update draft, i.e. Nil, Max, Rfc4122Variant10xxUuid. This excludes only Generic UUIDs and ULIDs.
TimeBasedUuid¶
UUIDv1, UUIDv2, UUIDv6, UUIDv7, and ULID extend this interface because they encode timestamp with various precisions:
<?php
use Arokettu\Uuid\UuidFactory;
$uuid = UuidFactory::v7();
var_dump($uuid->getDateTime()->format('c')); // current time