mirror of
https://github.com/ramsey/uuid.git
synced 2026-06-25 17:45:35 +03:00
Merge pull request #70 from aztech-forks/master
Time generator improvements
This commit is contained in:
+18
-20
@@ -14,6 +14,8 @@
|
||||
|
||||
namespace Ramsey\Uuid;
|
||||
|
||||
use Ramsey\Uuid\Converter\TimeConverterInterface;
|
||||
use Ramsey\Uuid\Generator\PeclUuidTimeGenerator;
|
||||
use Ramsey\Uuid\Provider\Node\FallbackNodeProvider;
|
||||
use Ramsey\Uuid\Provider\Node\RandomNodeProvider;
|
||||
use Ramsey\Uuid\Provider\Node\SystemNodeProvider;
|
||||
@@ -46,6 +48,8 @@ class FeatureSet
|
||||
|
||||
private $ignoreSystemNode = false;
|
||||
|
||||
private $enablePecl = false;
|
||||
|
||||
private $builder;
|
||||
|
||||
private $codec;
|
||||
@@ -58,26 +62,23 @@ class FeatureSet
|
||||
|
||||
private $timeGenerator;
|
||||
|
||||
private $timeConverter;
|
||||
|
||||
private $timeProvider;
|
||||
|
||||
public function __construct(
|
||||
$useGuids = false,
|
||||
$force32Bit = false,
|
||||
$forceNoBigNumber = false,
|
||||
$ignoreSystemNode = false
|
||||
$ignoreSystemNode = false,
|
||||
$enablePecl = false
|
||||
) {
|
||||
$this->disableBigNumber = $forceNoBigNumber;
|
||||
$this->disable64Bit = $force32Bit;
|
||||
$this->ignoreSystemNode = $ignoreSystemNode;
|
||||
$this->enablePecl = $enablePecl;
|
||||
|
||||
$this->numberConverter = $this->buildNumberConverter();
|
||||
$this->builder = $this->buildUuidBuilder();
|
||||
$this->codec = $this->buildCodec($useGuids);
|
||||
$this->nodeProvider = $this->buildNodeProvider();
|
||||
$this->randomGenerator = $this->buildRandomGenerator();
|
||||
$this->timeConverter = $this->buildTimeConverter();
|
||||
$this->setTimeProvider(new SystemTimeProvider());
|
||||
}
|
||||
|
||||
@@ -111,20 +112,9 @@ class FeatureSet
|
||||
return $this->timeGenerator;
|
||||
}
|
||||
|
||||
public function getTimeConverter()
|
||||
{
|
||||
return $this->timeConverter;
|
||||
}
|
||||
|
||||
public function getTimeProvider()
|
||||
{
|
||||
return $this->timeProvider;
|
||||
}
|
||||
|
||||
public function setTimeProvider(TimeProviderInterface $timeProvider)
|
||||
{
|
||||
$this->timeProvider = $timeProvider;
|
||||
$this->timeGenerator = $this->buildTimeGenerator();
|
||||
$this->timeGenerator = $this->buildTimeGenerator($timeProvider);
|
||||
}
|
||||
|
||||
protected function buildCodec($useGuids = false)
|
||||
@@ -162,9 +152,17 @@ class FeatureSet
|
||||
return (new RandomGeneratorFactory())->getGenerator();
|
||||
}
|
||||
|
||||
protected function buildTimeGenerator()
|
||||
protected function buildTimeGenerator(TimeProviderInterface $timeProvider)
|
||||
{
|
||||
return (new TimeGeneratorFactory($this))->getGenerator();
|
||||
if ($this->enablePecl) {
|
||||
return new PeclUuidTimeGenerator();
|
||||
}
|
||||
|
||||
return (new TimeGeneratorFactory(
|
||||
$this->nodeProvider,
|
||||
$this->buildTimeConverter(),
|
||||
$timeProvider
|
||||
))->getGenerator();
|
||||
}
|
||||
|
||||
protected function buildTimeConverter()
|
||||
|
||||
@@ -14,26 +14,43 @@
|
||||
|
||||
namespace Ramsey\Uuid\Generator;
|
||||
|
||||
use Ramsey\Uuid\FeatureSet;
|
||||
use Ramsey\Uuid\Converter\TimeConverterInterface;
|
||||
use Ramsey\Uuid\Provider\NodeProviderInterface;
|
||||
use Ramsey\Uuid\Provider\TimeProviderInterface;
|
||||
|
||||
class TimeGeneratorFactory
|
||||
{
|
||||
/**
|
||||
* @var FeatureSet
|
||||
* @var NodeProviderInterface
|
||||
*/
|
||||
private $featureSet;
|
||||
private $nodeProvider;
|
||||
|
||||
public function __construct(FeatureSet $featureSet)
|
||||
{
|
||||
$this->featureSet = $featureSet;
|
||||
/**
|
||||
* @var TimeConverterInterface
|
||||
*/
|
||||
private $timeConverter;
|
||||
|
||||
/**
|
||||
* @var TimeProviderInterface
|
||||
*/
|
||||
private $timeProvider;
|
||||
|
||||
public function __construct(
|
||||
NodeProviderInterface $nodeProvider,
|
||||
TimeConverterInterface $timeConverter,
|
||||
TimeProviderInterface $timeProvider
|
||||
) {
|
||||
$this->nodeProvider = $nodeProvider;
|
||||
$this->timeConverter = $timeConverter;
|
||||
$this->timeProvider = $timeProvider;
|
||||
}
|
||||
|
||||
public function getGenerator()
|
||||
{
|
||||
return new DefaultTimeGenerator(
|
||||
$this->featureSet->getNodeProvider(),
|
||||
$this->featureSet->getTimeConverter(),
|
||||
$this->featureSet->getTimeProvider()
|
||||
$this->nodeProvider,
|
||||
$this->timeConverter,
|
||||
$this->timeProvider
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
+5
-26
@@ -16,9 +16,7 @@ namespace Ramsey\Uuid;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use Ramsey\Uuid\Converter\NumberConverterInterface;
|
||||
use Ramsey\Uuid\Converter\TimeConverterInterface;
|
||||
use Ramsey\Uuid\Provider\NodeProviderInterface;
|
||||
use Ramsey\Uuid\Provider\TimeProviderInterface;
|
||||
use Ramsey\Uuid\Generator\RandomGeneratorInterface;
|
||||
use Ramsey\Uuid\Generator\TimeGeneratorInterface;
|
||||
use Ramsey\Uuid\Codec\CodecInterface;
|
||||
@@ -55,18 +53,6 @@ class UuidFactory implements UuidFactoryInterface
|
||||
*/
|
||||
private $timeGenerator = null;
|
||||
|
||||
/**
|
||||
*
|
||||
* @var TimeConverterInterface
|
||||
*/
|
||||
private $timeConverter = null;
|
||||
|
||||
/**
|
||||
*
|
||||
* @var TimeProviderInterface
|
||||
*/
|
||||
private $timeProvider = null;
|
||||
|
||||
/**
|
||||
*
|
||||
* @var UuidBuilderInterface
|
||||
@@ -86,8 +72,6 @@ class UuidFactory implements UuidFactoryInterface
|
||||
$this->numberConverter = $features->getNumberConverter();
|
||||
$this->randomGenerator = $features->getRandomGenerator();
|
||||
$this->timeGenerator = $features->getTimeGenerator();
|
||||
$this->timeConverter = $features->getTimeConverter();
|
||||
$this->timeProvider = $features->getTimeProvider();
|
||||
$this->uuidBuilder = $features->getBuilder();
|
||||
}
|
||||
|
||||
@@ -111,21 +95,16 @@ class UuidFactory implements UuidFactoryInterface
|
||||
return $this->timeGenerator;
|
||||
}
|
||||
|
||||
public function setTimeGenerator(TimeGeneratorInterface $generator)
|
||||
{
|
||||
$this->timeGenerator = $generator;
|
||||
}
|
||||
|
||||
public function getNumberConverter()
|
||||
{
|
||||
return $this->numberConverter;
|
||||
}
|
||||
|
||||
public function getTimeConverter()
|
||||
{
|
||||
return $this->timeConverter;
|
||||
}
|
||||
|
||||
public function getTimeProvider()
|
||||
{
|
||||
return $this->timeProvider;
|
||||
}
|
||||
|
||||
public function setRandomGenerator(RandomGeneratorInterface $generator)
|
||||
{
|
||||
$this->randomGenerator = $generator;
|
||||
|
||||
Reference in New Issue
Block a user