Documentation

Fields
in package
implements FieldsInterface Uses NilTrait, SerializableFieldsTrait, VariantTrait, VersionTrait

RFC 4122 variant UUIDs are comprised of a set of named fields

Internally, this class represents the fields together as a 16-byte binary string.

Tags
psalm-immutable

Interfaces, Classes, Traits and Enums

FieldsInterface
RFC 4122 defines fields for a specific variant of UUID

Table of Contents

$bytes  : string
__construct()  : mixed
__serialize()  : array<string|int, mixed>
__unserialize()  : void
getBytes()  : string
getClockSeq()  : Hexadecimal
Returns the full 16-bit clock sequence, with the variant bits (two most significant bits) masked out
getClockSeqHiAndReserved()  : Hexadecimal
Returns the high field of the clock sequence multiplexed with the variant
getClockSeqLow()  : Hexadecimal
Returns the low field of the clock sequence
getNode()  : Hexadecimal
Returns the node field
getTimeHiAndVersion()  : Hexadecimal
Returns the high field of the timestamp multiplexed with the version
getTimeLow()  : Hexadecimal
Returns the low field of the timestamp
getTimeMid()  : Hexadecimal
Returns the middle field of the timestamp
getTimestamp()  : Hexadecimal
Returns the full 60-bit timestamp, without the version
getVariant()  : int
Returns the variant identifier, according to RFC 4122, for the given bytes
getVersion()  : int|null
Returns the version
isNil()  : bool
Returns true if these fields represent a nil UUID
serialize()  : string
Returns a string representation of object
unserialize()  : void
Constructs the object from a serialized string representation
isCorrectVariant()  : bool
isCorrectVersion()  : bool
Returns true if the version matches one of those defined by RFC 4122

Properties

Methods

__construct()

public __construct(string $bytes) : mixed
Parameters
$bytes : string

A 16-byte binary string representation of a UUID

Tags
throws
InvalidArgumentException

if the byte string is not exactly 16 bytes

throws
InvalidArgumentException

if the byte string does not represent an RFC 4122 UUID

throws
InvalidArgumentException

if the byte string does not contain a valid version

Return values
mixed

__serialize()

public __serialize() : array<string|int, mixed>
Return values
array<string|int, mixed>

__unserialize()

public __unserialize(array<string|int, mixed> $data) : void
Parameters
$data : array<string|int, mixed>
Return values
void

getBytes()

public getBytes() : string
Return values
string

getClockSeq()

Returns the full 16-bit clock sequence, with the variant bits (two most significant bits) masked out

public getClockSeq() : Hexadecimal
Return values
Hexadecimal

getClockSeqHiAndReserved()

Returns the high field of the clock sequence multiplexed with the variant

public getClockSeqHiAndReserved() : Hexadecimal
Return values
Hexadecimal

getTimeHiAndVersion()

Returns the high field of the timestamp multiplexed with the version

public getTimeHiAndVersion() : Hexadecimal
Return values
Hexadecimal

getTimestamp()

Returns the full 60-bit timestamp, without the version

public getTimestamp() : Hexadecimal

For version 2 UUIDs, the time_low field is the local identifier and should not be returned as part of the time. For this reason, we set the bottom 32 bits of the timestamp to 0's. As a result, there is some loss of fidelity of the timestamp, for version 2 UUIDs. The timestamp can be off by a range of 0 to 429.4967295 seconds (or 7 minutes, 9 seconds, and 496730 microseconds).

For version 6 UUIDs, the timestamp order is reversed from the typical RFC 4122 order (the time bits are in the correct bit order, so that it is monotonically increasing). In returning the timestamp value, we put the bits in the order: time_low + time_mid + time_hi.

Return values
Hexadecimal

getVariant()

Returns the variant identifier, according to RFC 4122, for the given bytes

public getVariant() : int

The following values may be returned:

  • 0 -- Reserved, NCS backward compatibility.
  • 2 -- The variant specified in RFC 4122.
  • 6 -- Reserved, Microsoft Corporation backward compatibility.
  • 7 -- Reserved for future definition.
Tags
link

RFC 4122, § 4.1.1: Variant

Return values
int

The variant identifier, according to RFC 4122

getVersion()

Returns the version

public getVersion() : int|null

The version number describes how the UUID was generated and has the following meaning:

  1. Time-based UUID
  2. DCE security UUID
  3. Name-based UUID hashed with MD5
  4. Randomly generated UUID
  5. Name-based UUID hashed with SHA-1

This returns null if the UUID is not an RFC 4122 variant, since version is only meaningful for this variant.

Return values
int|null

isNil()

Returns true if these fields represent a nil UUID

public abstract isNil() : bool
Return values
bool

serialize()

Returns a string representation of object

public serialize() : string
Return values
string

unserialize()

Constructs the object from a serialized string representation

public unserialize(string $serialized) : void
Parameters
$serialized : string

The serialized string representation of the object

Tags
phpcsSuppress

SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint

psalm-suppress

UnusedMethodCall

Return values
void

isCorrectVariant()

private isCorrectVariant() : bool
Return values
bool

isCorrectVersion()

Returns true if the version matches one of those defined by RFC 4122

private isCorrectVersion() : bool
Return values
bool

True if the UUID version is valid, false otherwise

Search results