From 0cd74639cf9f33a6b999c01f2f6578115bb43895 Mon Sep 17 00:00:00 2001 From: Aztech Date: Tue, 28 Jul 2015 22:15:45 +0200 Subject: [PATCH] Enable use of custom TimeGenerator implementations - Removes now unnecessary `timeConverter` and `timeProvider` properties, setters, and getters in both FeatureSet and UuidFactory as those are now exclusively used by the default TimeGenerator - Adds a `setTimeGenerator` method on UuidFactory to override the default time generator --- src/FeatureSet.php | 33 ++++++++++-------------- src/Generator/TimeGeneratorFactory.php | 35 +++++++++++++++++++------- src/UuidFactory.php | 31 ++++------------------- 3 files changed, 44 insertions(+), 55 deletions(-) diff --git a/src/FeatureSet.php b/src/FeatureSet.php index e1ba0e6..1d35635 100644 --- a/src/FeatureSet.php +++ b/src/FeatureSet.php @@ -14,6 +14,7 @@ namespace Ramsey\Uuid; +use Ramsey\Uuid\Converter\TimeConverterInterface; use Ramsey\Uuid\Provider\Node\FallbackNodeProvider; use Ramsey\Uuid\Provider\Node\RandomNodeProvider; use Ramsey\Uuid\Provider\Node\SystemNodeProvider; @@ -46,6 +47,8 @@ class FeatureSet private $ignoreSystemNode = false; + private $enablePecl = false; + private $builder; private $codec; @@ -58,26 +61,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 +111,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 +151,13 @@ class FeatureSet return (new RandomGeneratorFactory())->getGenerator(); } - protected function buildTimeGenerator() + protected function buildTimeGenerator(TimeProviderInterface $timeProvider) { - return (new TimeGeneratorFactory($this))->getGenerator(); + return (new TimeGeneratorFactory( + $this->nodeProvider, + $this->buildTimeConverter(), + $timeProvider + ))->getGenerator(); } protected function buildTimeConverter() diff --git a/src/Generator/TimeGeneratorFactory.php b/src/Generator/TimeGeneratorFactory.php index c2ba9bf..92831cd 100644 --- a/src/Generator/TimeGeneratorFactory.php +++ b/src/Generator/TimeGeneratorFactory.php @@ -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 ); } } diff --git a/src/UuidFactory.php b/src/UuidFactory.php index b0121ef..ae114ec 100644 --- a/src/UuidFactory.php +++ b/src/UuidFactory.php @@ -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;