All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Uuid::fromString()
, Uuid::fromBytes()
,
UuidInterface#toString()
, and UuidInterface#getBytes()
. See PR
#324 for more information.allowed_classes
being
set to false
. For details, see ramsey/uuid#303
and ramsey/collection#47.Uuid::uuid6()
, which returns a
Nonstandard\UuidV6
instance.Uuid::uuid2()
, which returns an Rfc4122\UuidV2
instance.Rfc4122\UuidV1
Rfc4122\UuidV2
Rfc4122\UuidV3
Rfc4122\UuidV4
Rfc4122\UuidV5
Rfc4122\NilUuid
Nonstandard\UuidV6
Guid\Guid
Nonstandard\Uuid
Uuid::fromDateTime()
to create version 1 UUIDs from instances of
\DateTimeInterface
.\DateTimeInterface
instance returned by UuidInterface::getDateTime()
(and now Rfc4122\UuidV1::getDateTime()
) now includes microseconds, as
specified by the version 1 UUID.Validator\ValidatorInterface
and Validator\GenericValidator
to allow
flexibility in validating UUIDs/GUIDs.
Rfc4122\Validator
that may be used for strict validation of
RFC 4122 UUID strings.Uuid
through
FeatureSet::setValidator()
.getValidator()
and setValidator()
to UuidFactory
.Provider\Node\StaticNodeProvider
to assist in setting a custom static
node value with the multicast bit set for version 1 UUIDs.Exception\BuilderNotFoundException
-
Thrown to indicate that no suitable UUID builder could be found.Exception\DateTimeException
-
Thrown to indicate that the PHP DateTime extension encountered an
exception/error.Exception\DceSecurityException
-
Thrown to indicate an exception occurred while dealing with DCE Security
(version 2) UUIDs.Exception\InvalidArgumentException
-
Thrown to indicate that the argument received is not valid. This extends the
built-in PHP \InvalidArgumentException
, so there should be no BC breaks
with ramsey/uuid throwing this exception, if you are catching the PHP
exception.Exception\InvalidBytesException
-
Thrown to indicate that the bytes being operated on are invalid in some way.Exception\NameException
-
Thrown to indicate that an error occurred while attempting to hash a
namespace and name.Exception\NodeException
-
Throw to indicate that attempting to fetch or create a node ID encountered
an error.Exception\RandomSourceException
-
Thrown to indicate that the source of random data encountered an error.Exception\TimeSourceException
-
Thrown to indicate that the source of time encountered an error.Exception\UnableToBuildUuidException
-
Thrown to indicate a builder is unable to build a UUID.Builder\FallbackBuilder
, used by FeatureSet
to help decide
whether to return a Uuid
or Nonstandard\Uuid
when decoding a
UUID string or bytes.Rfc4122\UuidInterface
to specifically represent RFC 4122 variant UUIDs.Rfc4122\UuidBuilder
to build RFC 4122 variant UUIDs. This replaces the
existing Builder\DefaultUuidBuilder
, which is now deprecated.Math\CalculatorInterface
for representing calculators to perform
arithmetic operations on integers.Math\BrickMathCalculator
, which is the default calculator used by this
library when math cannot be performed in native PHP due to integer size
limitations. The calculator is configurable and may be changed, if desired.Converter\Number\GenericNumberConverter
and
Converter\Time\GenericTimeConverter
which will use the calculator provided
to convert numbers and time to values for UUIDs.Type\Hexadecimal
, Type\Integer
, Type\Decimal
, and Type\Time
for improved type-safety when dealing with arbitrary string values.Type\TypeInterface
that each of the ramsey/uuid types implements.Fields\FieldsInterface
and Rfc4122\FieldsInterface
to define
field layouts for UUID variants. The implementations Rfc4122\Fields
,
Guid\Fields
, and Nonstandard\Fields
store the 16-byte,
binary string representation of the UUID internally, and these manage
conversion of the binary string into the hexadecimal field values.Builder\BuilderCollection
and Provider\Node\NodeProviderCollection
.
These are typed collections for providing builders and node providers to
Builder\FallbackBuilder
and Provider\Node\FallbackNodeProvider
, respectively.Generator\NameGeneratorInterface
to support alternate methods of
generating bytes for version 3 and version 5 name-based UUID. By default,
ramsey/uuid uses the Generator\DefaultNameGenerator
, which uses the standard
algorithm this library has used since the beginning. You may choose to use the
new Generator\PeclUuidNameGenerator
to make use of the new
uuid_generate_md5()
and uuid_generate_sha1()
functions in
ext-uuid version 1.1.0.UuidInterface
:
Uuid::uuid1
returns Rfc4122\UuidV1
Uuid::uuid3
returns Rfc4122\UuidV3
Uuid::uuid4
returns Rfc4122\UuidV4
Uuid::uuid5
returns Rfc4122\UuidV5
Type\Hexadecimal
for the $node
parameter for
UuidFactoryInterface::uuid1()
. This is in addition to the int|string
types
already accepted, so there are no BC breaks. Type\Hexadecimal
is now the
recommended type to pass for $node
.Uuid::fromString()
, Uuid::fromBytes()
, and
Uuid::fromInteger()
will now return either an Rfc4122\UuidInterface
instance or an instance of Nonstandard\Uuid
, depending on whether the input
contains an RFC 4122 variant UUID with a valid version identifier. Both
implement UuidInterface
, so BC breaks should not occur if typehints use the
interface.Uuid::getFields()
to return an instance of Fields\FieldsInterface
.
Previously, it returned an array of integer values (on 64-bit systems only).Uuid::getDateTime()
now returns an instance of \DateTimeImmutable
instead
of \DateTime
.UuidInterface
:
getHex()
now returns a Type\Hexadecimal
instance.getInteger()
now returns a Type\Integer
instance. The Type\Integer
instance holds a string representation of a 128-bit integer. You may then
use a math library of your choice (bcmath, gmp, etc.) to operate on the
string integer.getDateTime()
now returns \DateTimeInterface
instead of \DateTime
.__toString()
method.getFields()
method. It returns an instance of Fields\FieldsInterface
.UuidFactoryInterface
:
uuid2()
uuid6()
fromDateTime()
fromInteger()
getValidator()
Exception\UnsupportedOperationException
is now descended from
\LogicException
. Previously, it descended from \RuntimeException
.Uuid
:
Uuid
from
array $fields
to Rfc4122\FieldsInterface $fields
.Converter\TimeConverterInterface $timeConverter
as the fourth
required constructor parameter for Uuid
.Builder\UuidBuilderInterface::build()
from array $fields
to string $bytes
. Rather than accepting an array of
hexadecimal strings as UUID fields, the build()
method now expects a byte
string.Converter\TimeConverterInterface $timeConverter
as the second required
constructor parameter for Rfc4122\UuidBuilder
. This also affects the
now-deprecated Builder\DefaultUuidBuilder
, since this class now inherits
from Rfc4122\UuidBuilder
.convertTime()
method to Converter\TimeConverterInterface
.getTime()
method to Provider\TimeProviderInterface
. It replaces the
currentTime()
method.Provider\Node\FallbackNodeProvider
now accepts only a
Provider\Node\NodeProviderCollection
as its constructor parameter.Provider\Time\FixedTimeProvider
no longer accepts an array but accepts only
Type\Time
instances.Provider\NodeProviderInterface::getNode()
now returns Type\Hexadecimal
instead of string|false|null
.Converter/TimeConverterInterface::calculateTime()
now returns
Type\Hexadecimal
instead of array
. The value is the full UUID timestamp
value (count of 100-nanosecond intervals since the Gregorian calendar epoch)
in hexadecimal format.NumberConverterInterface
to accept and return string values
instead of mixed
; this simplifies the interface and makes it consistent.Generator\DefaultTimeGenerator
no longer adds the variant and version bits
to the bytes it returns. These must be applied to the bytes afterwards.OrderedTimeCodec
now checks
whether the UUID is an RFC 4122 variant, version 1 UUID. If not, it will throw
an exception—InvalidArgumentException
when using
OrderedTimeCodec::encodeBinary()
and UnsupportedOperationException
when
using OrderedTimeCodec::decodeBytes()
.The following functionality is deprecated and will be removed in ramsey/uuid 5.0.0.
UuidInterface
and Uuid
are deprecated. Use their
counterparts on the Rfc4122\FieldsInterface
returned by Uuid::getFields()
.
getClockSeqHiAndReservedHex()
getClockSeqLowHex()
getClockSequenceHex()
getFieldsHex()
getNodeHex()
getTimeHiAndVersionHex()
getTimeLowHex()
getTimeMidHex()
getTimestampHex()
getVariant()
getVersion()
Uuid
are deprecated. Use the Rfc4122\FieldsInterface
instance returned by Uuid::getFields()
to get the Type\Hexadecimal
value
for these fields. You may use the new Math\CalculatorInterface::toIntegerValue()
method to convert the Type\Hexadecimal
instances to instances of
Type\Integer
. This library provides Math\BrickMathCalculator
, which may be
used for this purpose, or you may use the arbitrary-precision arithemetic
library of your choice.
getClockSeqHiAndReserved()
getClockSeqLow()
getClockSequence()
getNode()
getTimeHiAndVersion()
getTimeLow()
getTimeMid()
getTimestamp()
getDateTime()
on UuidInterface
and Uuid
is deprecated. Use this method
only on instances of Rfc4122\UuidV1
or Nonstandard\UuidV6
.getUrn()
on UuidInterface
and Uuid
is deprecated. It is available on
Rfc4122\UuidInterface
and classes that implement it.UuidInterface::getHex()
and
splitting the return value in half.
UuidInterface::getLeastSignificantBitsHex()
UuidInterface::getMostSignificantBitsHex()
Uuid::getLeastSignificantBitsHex()
Uuid::getMostSignificantBitsHex()
Uuid::getLeastSignificantBits()
Uuid::getMostSignificantBits()
UuidInterface::getNumberConverter()
and Uuid::getNumberConverter()
are
deprecated. There is no alternative recommendation, so plan accordingly.Builder\DefaultUuidBuilder
is deprecated; transition to Rfc4122\UuidBuilder
.Converter\Number\BigNumberConverter
is deprecated; transition to
Converter\Number\GenericNumberConverter
.Converter\Time\BigNumberTimeConverter
is deprecated; transition to
Converter\Time\GenericTimeConverter
.Builder\DegradedUuidBuilder
Converter\Number\DegradedNumberConverter
Converter\Time\DegradedTimeConverter
DegradedUuid
Uuid::UUID_TYPE_IDENTIFIER
constant is deprecated. Use
Uuid::UUID_TYPE_DCE_SECURITY
instead.Uuid::VALID_PATTERN
constant is deprecated. Use
Validator\GenericValidator::getPattern()
or Rfc4122\Validator::getPattern()
instead.Generator\RandomBytesGenerator
as a suitable replacement:
Generator\MtRandGenerator
Generator\OpenSslGenerator
Generator\SodiumRandomGenerator
Exception\UnsatisfiedDependencyException
. This library no longer
throws this exception.Provider\TimeProviderInterface::currentTime()
. Use
Provider\TimeProviderInterface::getTime()
instead.Rfc4122\UuidV2
.Provider\Node\StaticNodeProvider
to assist in setting a custom static
node value with the multicast bit set for version 1 UUIDs.Provider\NodeProviderInterface::getNode()
now returns Type\Hexadecimal
instead of string|false|null
.ValidatorInterface::getPattern()
to return the regular expression
pattern used by the validator.v6()
helper function for version 6 UUIDs.private
. Use the getPattern()
method instead.$node
parameter for UuidFactoryInterface::uuid6()
to accept
null
or Type\Hexadecimal
.Type\Hexadecimal
for the $node
parameter for
UuidFactoryInterface::uuid1()
. This is in addition to the int|string
types
already accepted, so there are no BC breaks. Type\Hexadecimal
is now the
recommended type to pass for $node
.currentTime()
method from Provider\Time\FixedTimeProvider
and
Provider\Time\SystemTimeProvider
; it had previously been removed from
Provider\TimeProviderInterface
.Builder\BuilderCollection
and Provider\Node\NodeProviderCollection
.Builder\FallbackBuilder
now accepts only a Builder\BuilderCollection
as
its constructor parameter.Provider\Node\FallbackNodeProvider
now accepts only a Provider\Node\NodeProviderCollection
as its constructor parameter.Provider\Time\FixedTimeProvider
no longer accepts an array but accepts only
Type\Time
instances.Type\TypeInterface
that each of the ramsey/uuid types implements.Type\IntegerValue
to Type\Integer
. It was originally named
IntegerValue
because static analysis sees Integer
in docblock annotations
and treats it as the native int
type. Integer
is not a reserved word in
PHP, so it should be named Integer
for consistency with other types in this
library. When using it, a class alias prevents static analysis from
complaining.Guid\Guid
and Nonstandard\Uuid
classes as final
.uuid6()
method to UuidFactoryInterface
.Uuid::UUID_TYPE_IDENTIFIER
is deprecated. Use Uuid::UUID_TYPE_DCE_SECURITY
instead.Uuid::VALID_PATTERN
is deprecated. Use Validator\GenericValidator::VALID_PATTERN
instead.Uuid::fromDateTime()
to create version 1 UUIDs from instances of
\DateTimeInterface
.Generator\NameGeneratorInterface
to support alternate methods of
generating bytes for version 3 and version 5 name-based UUID. By default,
ramsey/uuid uses the Generator\DefaultNameGenerator
, which uses the standard
algorithm this library has used since the beginning. You may choose to use the
new Generator\PeclUuidNameGenerator
to make use of the new
uuid_generate_md5()
and uuid_generate_sha1()
functions in ext-uuid version
1.1.0.fromDateTime()
method to UuidFactoryInterface
.UuidInterface::getHex()
to return a Ramsey\Uuid\Type\Hexadecimal
instance.UuidInterface::getInteger()
to return a Ramsey\Uuid\Type\IntegerValue
instance.Validator\ValidatorInterface
and Validator\GenericValidator
to allow
flexibility in validating UUIDs/GUIDs.
Uuid
through
FeatureSet::setValidator()
.getValidator()
and setValidator()
to UuidFactory
.InvalidArgumentException
that descends from the built-in
PHP \InvalidArgumentException
. All places that used to throw
\InvalidArgumentException
now throw Ramsey\Uuid\Exception\InvalidArgumentException
.
This should not cause any BC breaks, however.DateTimeException
that descends from the built-in PHP
\RuntimeException
. Uuid::getDateTime()
may throw this exception if
\DateTimeImmutable
throws an error or exception.RandomSourceException
that descends from the built-in PHP
\RuntimeException
. DefaultTimeGenerator
, RandomBytesGenerator
, and
RandomNodeProvider
may throw this exception if random_bytes()
or
random_int()
throw an error or exception.Fields\FieldsInterface
and Rfc4122\FieldsInterface
to define
field layouts for UUID variants. The implementations Rfc4122\Fields
,
Guid\Fields
, and Nonstandard\Fields
store the 16-byte,
binary string representation of the UUID internally, and these manage
conversion of the binary string into the hexadecimal field values.Rfc4122\UuidInterface
to specifically represent RFC 4122 variant UUIDs.Rfc4122\UuidV1
Rfc4122\UuidV2
Rfc4122\UuidV3
Rfc4122\UuidV4
Rfc4122\UuidV5
Rfc4122\NilUuid
Rfc4122\UuidBuilder
to build RFC 4122 variant UUIDs. This replaces the
existing Builder\DefaultUuidBuilder
, which is now deprecated.Uuid::uuid2()
, which returns an Rfc4122\UuidV2
instance.Guid\Guid
Nonstandard\Uuid
.Builder\FallbackBuilder
, used by FeatureSet
to help decide
whether to return a Uuid
or Nonstandard\Uuid
when decoding a
UUID string or bytes.Type\Hexadecimal
, Type\IntegerValue
, and Type\Time
for
improved type-safety when dealing with arbitrary string values.Math\CalculatorInterface
for representing calculators to perform
arithmetic operations on integers.Math\BrickMathCalculator
, which is the default calculator used by this
library when math cannot be performed in native PHP due to integer size
limitations. The calculator is configurable and may be changed, if desired.Converter\Number\GenericNumberConverter
and
Converter\Time\GenericTimeConverter
which will use the calculator provided
to convert numbers and time to values for UUIDs.\DateTimeInterface
instance returned by UuidInterface::getDateTime()
(and now Rfc4122\UuidV1::getDateTime()
) now includes microseconds, as
specified by the version 1 UUID.__toString()
method to UuidInterface
.UuidInterface::getDateTime()
method now specifies \DateTimeInterface
as the return value, rather than \DateTime
; Uuid::getDateTime()
now
returns an instance of \DateTimeImmutable
instead of \DateTime
.getFields()
method to UuidInterface
.getValidator()
method to UuidFactoryInterface
.uuid2()
method to UuidFactoryInterface
.convertTime()
method to Converter\TimeConverterInterface
.getTime()
method to Provider\TimeProviderInterface
.Uuid::getFields()
to return an instance of Fields\FieldsInterface
.
Previously, it returned an array of integer values (on 64-bit systems only).Uuid
from
array $fields
to Rfc4122\FieldsInterface $fields
.Converter\TimeConverterInterface $timeConverter
as fourth required
constructor parameter for Uuid
and second required constructor parameter for
Builder\DefaultUuidBuilder
.UuidInterface::getInteger()
to always return a string
value instead
of mixed
. This is a string representation of a 128-bit integer. You may then
use a math library of your choice (bcmath, gmp, etc.) to operate on the
string integer.Builder\UuidBuilderInterface::build()
from array $fields
to string $bytes
. Rather than accepting an array of
hexadecimal strings as UUID fields, the build()
method now expects a byte
string.Generator\DefaultTimeGenerator
no longer adds the variant and version bits
to the bytes it returns. These must be applied to the bytes afterwards.Converter/TimeConverterInterface::calculateTime()
now returns
Type\Hexadecimal
instead of array
. The value is the full UUID timestamp
value (count of 100-nanosecond intervals since the Gregorian calendar epoch)
in hexadecimal format.mixed
; this simplifies the interface and makes it consistent:
NumberConverterInterface::fromHex(string $hex): string
NumberConverterInterface::toHex(string $number): string
TimeConverterInterface::calculateTime(string $seconds, string $microseconds): array
UnsupportedOperationException
is now descended from \LogicException
.
Previously, it descended from \RuntimeException
.OrderedTimeCodec
now checks
whether the UUID is an RFC 4122 variant, version 1 UUID. If not, it will throw
an exception—InvalidArgumentException
when using
OrderedTimeCodec::encodeBinary()
and UnsupportedOperationException
when
using OrderedTimeCodec::decodeBytes()
.Uuid::fromString()
, Uuid::fromBytes()
, and
Uuid::fromInteger()
will now return either an Rfc4122\UuidInterface
instance or an instance of Nonstandard\Uuid
, depending on whether the input
contains an RFC 4122 variant UUID with a valid version identifier. Both
implement UuidInterface
, so BC breaks should not occur if typehints use the
interface.UuidInterface
:
Uuid::uuid1
returns Rfc4122\UuidV1
Uuid::uuid3
returns Rfc4122\UuidV3
Uuid::uuid4
returns Rfc4122\UuidV4
Uuid::uuid5
returns Rfc4122\UuidV5
The following functionality is deprecated and will be removed in ramsey/uuid 5.0.0.
UuidInterface
and Uuid
are deprecated. Use their
counterparts on the Rfc4122\FieldsInterface
returned by Uuid::getFields()
.
getClockSeqHiAndReservedHex()
getClockSeqLowHex()
getClockSequenceHex()
getFieldsHex()
getNodeHex()
getTimeHiAndVersionHex()
getTimeLowHex()
getTimeMidHex()
getTimestampHex()
getVariant()
getVersion()
Uuid
are deprecated. Use the Rfc4122\FieldsInterface
instance returned by Uuid::getFields()
to get the Type\Hexadecimal
value
for these fields, and then use the arbitrary-precision arithmetic library of
your choice to convert them to string integers.
getClockSeqHiAndReserved()
getClockSeqLow()
getClockSequence()
getNode()
getTimeHiAndVersion()
getTimeLow()
getTimeMid()
getTimestamp()
getDateTime()
on UuidInterface
and Uuid
is deprecated. Use this method
only on instances of Rfc4122\UuidV1
.getUrn()
on UuidInterface
and Uuid
is deprecated. It is available on
Rfc4122\UuidInterface
and classes that implement it.UuidInterface::getHex()
and
splitting the return value in half.
UuidInterface::getLeastSignificantBitsHex()
UuidInterface::getMostSignificantBitsHex()
Uuid::getLeastSignificantBitsHex()
Uuid::getMostSignificantBitsHex()
Uuid::getLeastSignificantBits()
Uuid::getMostSignificantBits()
UuidInterface::getNumberConverter()
and Uuid::getNumberConverter()
are
deprecated. There is no alternative recommendation, so plan accordingly.Builder\DefaultUuidBuilder
is deprecated; transition to
Rfc4122\UuidBuilder
.Converter\Number\BigNumberConverter
is deprecated; transition to
Converter\Number\GenericNumberConverter
.Converter\Time\BigNumberTimeConverter
is deprecated; transition to
Converter\Time\GenericTimeConverter
.Provider\TimeProviderInterface::currentTime()
is deprecated; transition to
the getTimestamp()
method on the same interface.Builder\DegradedUuidBuilder
Converter\Number\DegradedNumberConverter
Converter\Time\DegradedTimeConverter
DegradedUuid
Generator\RandomBytesGenerator
as a suitable replacement:
Generator\MtRandGenerator
Generator\OpenSslGenerator
Generator\SodiumRandomGenerator
Exception\UnsatisfiedDependencyException
. This library no longer
throws this exception.As an example, consider the case of timestamp 1
with 600000
microseconds
(1.600000
). This is the first second after midnight on January 1, 1970, UTC.
Previous versions of this library had a bug that would round this to 2
, so
the rendered time was 1970-01-01 00:00:02
. This was incorrect. Despite
having 600000
microseconds, the time should not round up to the next second.
Rather, the time should be 1970-01-01 00:00:01.600000
. Since this version of
ramsey/uuid does not support microseconds, the microseconds are dropped, and
the time is 1970-01-01 00:00:01
. No rounding should occur.
/sys/class/net/*/address
are readable
before attempting to read them. This avoids a PHP warning that was being
emitted on hosts that do not grant permission to read these files.RandomNodeProvider
behavior on 32-bit systems. The RandomNodeProvider
was converting a 6-byte string to a decimal number, which is a 48-bit,
unsigned integer. This caused problems on 32-bit systems and has now been
resolved.Ramsey\Uuid
namespace.
v1(int|string|null $node = null, int|null $clockSeq = null): string
v3(string|UuidInterface $ns, string $name): string
v4(): string
v5(string|UuidInterface $ns, string $name): string
RandomLibAdapter
. This
is a non-breaking change.These will be removed in ramsey/uuid version 4.0.0:
MtRandGenerator
, OpenSslGenerator
, and SodiumRandomGenerator
are
deprecated in favor of using the default RandomBytesGenerator
.ext-json
as a required dependency in composer.json
.PHP_OS
instead of php_uname()
when determining the system OS, for
cases when php_uname()
is disabled for security reasons.glob()
returns false when searching
/sys/class/net/*/address
files on LinuxDefaultTimeGenerator
random_int()
from mt_rand()
for better random numbersrandom_bytes()
when generating random nodesUuid::UUID_TYPE_TIME
Uuid::UUID_TYPE_IDENTIFIER
Uuid::UUID_TYPE_HASH_MD5
Uuid::UUID_TYPE_RANDOM
Uuid::UUID_TYPE_HASH_SHA1
str_pad()
instead of sprintf()
InvalidUuidStringException
, which is thrown when attempting to decode an
invalid string UUID; this does not introduce any BC issues, since the new
exception inherits from the previously used InvalidArgumentException
str_pad()
and dechex()
instead of sprintf()
)OrderedTimeCodec
to store UUID in an optimized way for InnoDBRandomNodeProvider
TimestampFirstCombCodec
and TimestampLastCombCodec
codecs to provide
the ability to generate COMB sequential UUIDs with the timestamp encoded as
either the first 48 bits or the last 48 bitsCombGenerator
for COMB sequential UUIDsRandomBytesGenerator
in versions of PHP earlier than 7.0;
this addresses and fixes the collision issueSodiumRandomGenerator
to allow use of the PECL libsodium extension as
a random bytes generator when creating UUIDsSerializable
interface to provide the ability to
serialize/unserialize UUID objectsThe 3.0.0 release represents a significant step for the ramsey/uuid library. While the simple and familiar API used in previous versions remains intact, this release provides greater flexibility to integrators, including the ability to inject your own number generators, UUID codecs, node and time providers, and more.
Please note: The changelog for 3.0.0 includes all notes from the alpha and beta versions leading up to this release.
CombGenerator
to allow generation of sequential UUIDsOpenSslGenerator
to generate random bytes on systems where
openssql_random_pseudo_bytes()
is presentMtRandGenerator
to provide a fallback in the event other random generators
are not presentRandomLibAdapter
to allow use of ircmaxell/random-libRandomBytesGenerator
for use with PHP 7; ramsey/uuid will default to use
this generator when running on PHP 7TimeGeneratorInterface
to
allow for other sources to generate version 1 UUIDs in this libraryPeclUuidTimeGenerator
and PeclUuidRandomGenerator
for creating version
1 or version 4 UUIDs using the pecl-uuid extensionsetTimeGenerator
method on UuidFactory
to override the default time
generatorPeclUuidTimeGenerator
via FeatureSet
FeatureSet
to use GUIDsJsonSerializable
Uuid
class as final
; everything is now based around
interfaces and factories, allowing you to use this package as a base to
implement other kinds of UUIDs with different dependenciesDegradedUuid
on 32-bit systems to indicate that
certain features are not availableRandomLibAdapter
to a medium-strength generator with
ircmaxell/random-lib; this is configurable, so other generator strengths may
be usedPeclUuidFactory
in favor of using pecl-uuid with generatorstimeConverter
and timeProvider
properties, setters, and getters in
both FeatureSet
and UuidFactory
as those are now exclusively used by the
default TimeGenerator
uuid
console application to ramsey/uuid-consoleUuid::VERSION
package version constantDegradedNumberConverter::fromHex()
DegradedNumberConverter::fromHex()
TimeGenerator
implementationssetTimeGenerator
method on UuidFactory
to override the default time
generatorPeclUuidTimeGenerator
via FeatureSet
timeConverter
and timeProvider
properties, setters, and getters in
both FeatureSet
and UuidFactory
as those are now exclusively used by the
default TimeGenerator
TimeGeneratorInterface
to allow
for other sources to generate version 1 UUIDs in this libraryPeclUuidTimeGenerator
and PeclUuidRandomGenerator
for creating version
1 or version 4 UUIDs using the pecl-uuid extensionRandomBytesGenerator
for use with PHP 7. ramsey/uuid will default to use
this generator when running on PHP 7RandomLibAdapter
to a medium-strength generator with
ircmaxell/random-lib; this is configurable, so other generator strengths may
be usedPeclUuidFactory
in favor of using pecl-uuid with generatorsUuidFactory
and/or extending FeatureSet
to override any package defaultsCombGenerator
to allow generation of sequential UUIDsOpenSslGenerator
to generate random bytes on systems where
openssql_random_pseudo_bytes()
is presentMtRandGenerator
to provide a fallback in the event other random generators
are not presentRandomLibAdapter
to allow use of ircmaxell/random-libFeatureSet
to use GUIDsJsonSerializable
Uuid
class as final
; everything is now based around
interfaces and factories, allowing you to use this package as a base to
implement other kinds of UUIDs with different dependenciesDegradedUuid
on 32-bit systems to indicate that
certain features are not availableuuid
console application to ramsey/uuid-consoleUuid::VERSION
package version constantRandomBytesGenerator
in versions of PHP earlier than 7.0;
this addresses and fixes the collision issueuuid
CLI applicationUuid::calculateUuidTime()
passthru()
and output buffering in getIfconfig()
fromInteger()
method to create UUIDs from string integer or
Moontoast\Math\BigNumber
generateBytes()
from foreach
to for
mt_rand
used in version 4 UUIDsUuid::VALID_PATTERN
constant containing a UUID validation regex patternuuid
console application could not find the Composer
autoloader when installed in another projectuuid
console application for generating and decoding UUIDs from
CLI (run ./bin/uuid
for details)Uuid::getInteger()
to retrieve a Moontoast\Math\BigNumber
representation of the 128-bit integer representing the UUIDUuid::getHex()
to retrieve the hexadecimal representation of the UUIDnetstat
on Linux to capture the node for a version 1 UUIDopenssl_random_pseudo_bytes()
, if available, to generate random bytesnull
from Uuid::getVersion()
if the UUID isn't an RFC 4122 variantUuid::fromString()
Uuid::fromBytes()
Doctrine\UuidType::requiresSQLCommentHint()
methodUuid::isValid()
where the NIL UUID was not reported as validUuid::isValid()
methodUuid
class final
Uuid::getLeastSignificantBits()
and Uuid::getMostSignificantBits()
; the
integers returned by these methods are unsigned 64-bit integers and
unsupported even on 64-bit builds of PHPUnsupportedOperationException
to the Exception
subnamespacefinal
keyword from Uuid
class