Parser#

Arokettu\Uuid\UuidParser and Arokettu\Uuid\UlidParser

A class to parse existing UUID or ULID.

fromBytes()#

Parses 16 bytes into UUID:

<?php

use Arokettu\Uuid\UuidParser;

// {6ba7b811-9dad-11d1-80b4-00c04fd430c8}
$bytes = "\x6b\xa7\xb8\x11\x9d\xad\x11\xd1\x80\xb4\x00\xc0\x4f\xd4\x30\xc8";

$uuid = UuidParser::fromBytes($bytes);
var_dump($uuid->toString());    // 6ba7b811-9dad-11d1-80b4-00c04fd430c8
var_dump($uuid::class);         // Arokettu\Uuid\UuidV1
var_dump($uuid->getDateTime()->format('c')); // 1998-02-04T22:13:53+00:00

UuidParser autodetects UUID versions: nil, max, variant 10xx versions 1-8 as described in RFC 9562. If the version is not determined, an instance of Arokettu\Uuid\GenericUuid is created. UlidParser always gets ULID:

<?php

use Arokettu\Uuid\UlidParser;

// same bytes as {6ba7b811-9dad-11d1-80b4-00c04fd430c8}
// but it's ULID 3BMYW137DD278R1D00R17X8C68
$bytes = "\x6b\xa7\xb8\x11\x9d\xad\x11\xd1\x80\xb4\x00\xc0\x4f\xd4\x30\xc8";

$ulid = UlidParser::fromBytes($bytes, asUlid: true);
var_dump($ulid->toString());    // 3BMYW137DD278R1D00R17X8C68
var_dump($ulid::class);         // Arokettu\Uuid\Ulid
var_dump($ulid->getDateTime()->format('c')); // 5720-12-08T01:31:12+00:00

Warning

This method is for the natural/network big endian byte sequences. Use fromGuidBytes() for Microsoft GUID byte order.

fromGuidBytes()#

Like fromBytes() but the byte order is Microsoft GUID mixed-endian:

<?php

use Arokettu\Uuid\UuidParser;

$guidBytes = '33221100554477668899aabbccddeeff';
$guid = UuidParser::fromGuidBytes(hex2bin($guidBytes));
var_dump($guid->toString()); // '00112233-4455-6677-8899-aabbccddeeff'

Warning

Make sure you use it only on actual GUID ordered byte sequences. Like fromBytes() it will always succeed but you will get an incorrect UUID if it was in the natural (big endian) order.

fromRfcFormat()#

Added in version 3.0: strict mode.

Changed in version 3.0: fromRfc4122 -> fromRfcFormat. fromRfc4122 is kept as an alias. fromRfc9562 added as an alias.

Parses RFC notation into UUID or ULID.

Supported formats:

  • Standard hex: 6ba7b811-9dad-11d1-80b4-00c04fd430c8

  • Standard hex with curly braces: {6ba7b811-9dad-11d1-80b4-00c04fd430c8}

  • Hex without dashes: 6ba7b8119dad11d180b400c04fd430c8

  • Hex without dashes in curly braces: {6ba7b8119dad11d180b400c04fd430c8}

Strict mode only supports the standard hex format. All representations are case insensitive. The type is determined the same way as in fromBytes().

<?php

use Arokettu\Uuid\UlidParser;
use Arokettu\Uuid\UuidParser;

$string = '{6ba7b811-9dad-11d1-80b4-00c04fd430c8}';

$uuid = UuidParser::fromRfcFormat($string);
var_dump($uuid->toString());    // 6ba7b811-9dad-11d1-80b4-00c04fd430c8
var_dump($uuid::class);         // Arokettu\Uuid\UuidV1

// curly braces are not allowed in the strict mode
UuidParser::fromRfcFormat($string, strict: true); // UnexpectedValueException

$ulid = UlidParser::fromRfcFormat($string);
var_dump($ulid->toString());    // 3BMYW137DD278R1D00R17X8C68
var_dump($ulid::class);         // Arokettu\Uuid\Ulid

fromBase32()#

Added in version 2.5: strict mode

Parses Crockford’s Base32 as defined in the ULID spec. The input is case insensitive. Strict mode parser does not allow characters ILO. Non-strict mode parser interprets them as 1 or 0 as per Crockford’s original standard.

<?php

use Arokettu\Uuid\UlidParser;
use Arokettu\Uuid\UuidParser;

$string = '3BMYW137DD278R1D00R17X8C68';

$ulid = UlidParser::fromBase32($string);
var_dump($ulid->toString());    // 3BMYW137DD278R1D00R17X8C68
var_dump($ulid::class);         // Arokettu\Uuid\Ulid

$uuid = UuidParser::fromBase32($string);
var_dump($uuid->toString());    // 6ba7b811-9dad-11d1-80b4-00c04fd430c8
var_dump($uuid::class);         // Arokettu\Uuid\UuidV1

fromString() / parse()#

Added in version 2.4: parse()

fromString() (alias parse()) tries to use fromRfcFormat() and fromBase32() to parse the given string.

fromDecimal()#

Parses a decimal string that represents UUID as an unsigned 128-bit big-endian integer.

Added in version 2.1.

<?php

use Arokettu\Uuid\UuidFactory;
use Arokettu\Uuid\UuidParser;

$uuid = UuidParser::fromDecimal('24197857203266357084698060135742627568');

var_dump($uuid->toString()); // 12345678-9abc-8ef0-9234-56789abcdef0