class UuidBuilder
Same name in this branch
- 11.1.x vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php \Ramsey\Uuid\Nonstandard\UuidBuilder
UuidBuilder builds instances of RFC 4122 UUIDs
@psalm-immutable
Hierarchy
- class \Ramsey\Uuid\Rfc4122\UuidBuilder implements \Ramsey\Uuid\Builder\UuidBuilderInterface
Expanded class hierarchy of UuidBuilder
3 files declare their use of UuidBuilder
- BuilderCollection.php in vendor/
ramsey/ uuid/ src/ Builder/ BuilderCollection.php - DefaultUuidBuilder.php in vendor/
ramsey/ uuid/ src/ Builder/ DefaultUuidBuilder.php - FeatureSet.php in vendor/
ramsey/ uuid/ src/ FeatureSet.php
File
-
vendor/
ramsey/ uuid/ src/ Rfc4122/ UuidBuilder.php, line 35
Namespace
Ramsey\Uuid\Rfc4122View source
class UuidBuilder implements UuidBuilderInterface {
private TimeConverterInterface $unixTimeConverter;
/**
* Constructs the DefaultUuidBuilder
*
* @param NumberConverterInterface $numberConverter The number converter to
* use when constructing the Uuid
* @param TimeConverterInterface $timeConverter The time converter to use
* for converting Gregorian time extracted from version 1, 2, and 6
* UUIDs to Unix timestamps
* @param TimeConverterInterface|null $unixTimeConverter The time converter
* to use for converter Unix Epoch time extracted from version 7 UUIDs
* to Unix timestamps
*/
public function __construct(NumberConverterInterface $numberConverter, TimeConverterInterface $timeConverter, ?TimeConverterInterface $unixTimeConverter = null) {
$this->unixTimeConverter = $unixTimeConverter ?? new UnixTimeConverter(new BrickMathCalculator());
}
/**
* Builds and returns a Uuid
*
* @param CodecInterface $codec The codec to use for building this Uuid instance
* @param string $bytes The byte string from which to construct a UUID
*
* @return Rfc4122UuidInterface UuidBuilder returns instances of Rfc4122UuidInterface
*
* @psalm-pure
*/
public function build(CodecInterface $codec, string $bytes) : UuidInterface {
try {
/** @var Fields $fields */
$fields = $this->buildFields($bytes);
if ($fields->isNil()) {
return new NilUuid($fields, $this->numberConverter, $codec, $this->timeConverter);
}
if ($fields->isMax()) {
return new MaxUuid($fields, $this->numberConverter, $codec, $this->timeConverter);
}
switch ($fields->getVersion()) {
case Uuid::UUID_TYPE_TIME:
return new UuidV1($fields, $this->numberConverter, $codec, $this->timeConverter);
case Uuid::UUID_TYPE_DCE_SECURITY:
return new UuidV2($fields, $this->numberConverter, $codec, $this->timeConverter);
case Uuid::UUID_TYPE_HASH_MD5:
return new UuidV3($fields, $this->numberConverter, $codec, $this->timeConverter);
case Uuid::UUID_TYPE_RANDOM:
return new UuidV4($fields, $this->numberConverter, $codec, $this->timeConverter);
case Uuid::UUID_TYPE_HASH_SHA1:
return new UuidV5($fields, $this->numberConverter, $codec, $this->timeConverter);
case Uuid::UUID_TYPE_REORDERED_TIME:
return new UuidV6($fields, $this->numberConverter, $codec, $this->timeConverter);
case Uuid::UUID_TYPE_UNIX_TIME:
return new UuidV7($fields, $this->numberConverter, $codec, $this->unixTimeConverter);
case Uuid::UUID_TYPE_CUSTOM:
return new UuidV8($fields, $this->numberConverter, $codec, $this->timeConverter);
}
throw new UnsupportedOperationException('The UUID version in the given fields is not supported ' . 'by this UUID builder');
} catch (Throwable $e) {
throw new UnableToBuildUuidException($e->getMessage(), (int) $e->getCode(), $e);
}
}
/**
* Proxy method to allow injecting a mock, for testing
*/
protected function buildFields(string $bytes) : FieldsInterface {
return new Fields($bytes);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title |
---|---|---|---|---|
UuidBuilder::$unixTimeConverter | private | property | ||
UuidBuilder::build | public | function | Builds and returns a Uuid | Overrides UuidBuilderInterface::build |
UuidBuilder::buildFields | protected | function | Proxy method to allow injecting a mock, for testing | |
UuidBuilder::__construct | public | function | Constructs the DefaultUuidBuilder |