mirror of
https://github.com/ramsey/uuid.git
synced 2026-06-14 15:56:48 +03:00
feat: support version 7 (Unix Epoch time) UUIDs
This commit is contained in:
+31
-1
@@ -23,6 +23,7 @@ use Ramsey\Uuid\Converter\Number\GenericNumberConverter;
|
||||
use Ramsey\Uuid\Converter\NumberConverterInterface;
|
||||
use Ramsey\Uuid\Converter\Time\GenericTimeConverter;
|
||||
use Ramsey\Uuid\Converter\Time\PhpTimeConverter;
|
||||
use Ramsey\Uuid\Converter\Time\UnixTimeConverter;
|
||||
use Ramsey\Uuid\Converter\TimeConverterInterface;
|
||||
use Ramsey\Uuid\Generator\DceSecurityGenerator;
|
||||
use Ramsey\Uuid\Generator\DceSecurityGeneratorInterface;
|
||||
@@ -35,6 +36,7 @@ use Ramsey\Uuid\Generator\RandomGeneratorFactory;
|
||||
use Ramsey\Uuid\Generator\RandomGeneratorInterface;
|
||||
use Ramsey\Uuid\Generator\TimeGeneratorFactory;
|
||||
use Ramsey\Uuid\Generator\TimeGeneratorInterface;
|
||||
use Ramsey\Uuid\Generator\UnixTimeGenerator;
|
||||
use Ramsey\Uuid\Guid\GuidBuilder;
|
||||
use Ramsey\Uuid\Math\BrickMathCalculator;
|
||||
use Ramsey\Uuid\Math\CalculatorInterface;
|
||||
@@ -141,6 +143,8 @@ class FeatureSet
|
||||
*/
|
||||
private $calculator;
|
||||
|
||||
private TimeGeneratorInterface $unixTimeGenerator;
|
||||
|
||||
/**
|
||||
* @param bool $useGuids True build UUIDs using the GuidStringCodec
|
||||
* @param bool $force32Bit True to force the use of 32-bit functionality
|
||||
@@ -164,15 +168,18 @@ class FeatureSet
|
||||
$this->ignoreSystemNode = $ignoreSystemNode;
|
||||
$this->enablePecl = $enablePecl;
|
||||
|
||||
$this->randomGenerator = $this->buildRandomGenerator();
|
||||
$this->setCalculator(new BrickMathCalculator());
|
||||
$this->builder = $this->buildUuidBuilder($useGuids);
|
||||
$this->codec = $this->buildCodec($useGuids);
|
||||
$this->nodeProvider = $this->buildNodeProvider();
|
||||
$this->nameGenerator = $this->buildNameGenerator();
|
||||
$this->randomGenerator = $this->buildRandomGenerator();
|
||||
$this->setTimeProvider(new SystemTimeProvider());
|
||||
$this->setDceSecurityProvider(new SystemDceSecurityProvider());
|
||||
$this->validator = new GenericValidator();
|
||||
|
||||
assert($this->timeProvider !== null);
|
||||
$this->unixTimeGenerator = $this->buildUnixTimeGenerator($this->timeProvider);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -255,6 +262,14 @@ class FeatureSet
|
||||
return $this->timeGenerator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Unix Epoch time generator configured for this environment
|
||||
*/
|
||||
public function getUnixTimeGenerator(): TimeGeneratorInterface
|
||||
{
|
||||
return $this->unixTimeGenerator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the validator configured for this environment
|
||||
*/
|
||||
@@ -396,6 +411,21 @@ class FeatureSet
|
||||
))->getGenerator();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a Unix Epoch time generator configured for this environment
|
||||
*
|
||||
* @param TimeProviderInterface $timeProvider The time provider to use with
|
||||
* the time generator
|
||||
*/
|
||||
private function buildUnixTimeGenerator(TimeProviderInterface $timeProvider): TimeGeneratorInterface
|
||||
{
|
||||
return new UnixTimeGenerator(
|
||||
new UnixTimeConverter(new BrickMathCalculator()),
|
||||
$timeProvider,
|
||||
$this->randomGenerator,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a name generator configured for this environment
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user