Remove CalculatorInterface as a Uuid constructor parameter

This commit is contained in:
Ben Ramsey
2020-01-13 11:09:35 -06:00
parent 52f764c284
commit 2ad77d9ca7
13 changed files with 26 additions and 101 deletions
-3
View File
@@ -66,9 +66,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
* Introduce `Converter\TimeConverterInterface $timeConverter` as fourth required
constructor parameter for `Uuid` and second required constructor parameter for
`Builder\DefaultUuidBuilder`.
* Introduce `Math\CalculatorInterface $calculator` as the fifth required
constructor parameter for `Uuid` and the third required constructor parameter
for `Builder\DefaultUuidBuilder`.
* Change `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
+2 -13
View File
@@ -17,7 +17,6 @@ namespace Ramsey\Uuid\Builder;
use Ramsey\Uuid\Codec\CodecInterface;
use Ramsey\Uuid\Converter\NumberConverterInterface;
use Ramsey\Uuid\Converter\TimeConverterInterface;
use Ramsey\Uuid\Math\CalculatorInterface;
use Ramsey\Uuid\Rfc4122\Fields as Rfc4122Fields;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\UuidInterface;
@@ -39,11 +38,6 @@ class DefaultUuidBuilder implements UuidBuilderInterface
*/
private $timeConverter;
/**
* @var CalculatorInterface
*/
private $calculator;
/**
* Constructs the DefaultUuidBuilder
*
@@ -51,17 +45,13 @@ class DefaultUuidBuilder implements UuidBuilderInterface
* use when constructing the Uuid
* @param TimeConverterInterface $timeConverter The time converter to use
* for converting timestamps extracted from a UUID to Unix timestamps
* @param CalculatorInterface $calculator The calculator to use for
* performing mathematical operations on UUIDs
*/
public function __construct(
NumberConverterInterface $numberConverter,
TimeConverterInterface $timeConverter,
CalculatorInterface $calculator
TimeConverterInterface $timeConverter
) {
$this->numberConverter = $numberConverter;
$this->timeConverter = $timeConverter;
$this->calculator = $calculator;
}
/**
@@ -80,8 +70,7 @@ class DefaultUuidBuilder implements UuidBuilderInterface
$fields,
$this->numberConverter,
$codec,
$this->timeConverter,
$this->calculator
$this->timeConverter
);
}
}
+2 -14
View File
@@ -19,8 +19,6 @@ use Ramsey\Uuid\Converter\NumberConverterInterface;
use Ramsey\Uuid\Converter\Time\DegradedTimeConverter;
use Ramsey\Uuid\Converter\TimeConverterInterface;
use Ramsey\Uuid\DegradedUuid;
use Ramsey\Uuid\Math\BrickMathCalculator;
use Ramsey\Uuid\Math\CalculatorInterface;
use Ramsey\Uuid\Rfc4122\Fields as Rfc4122Fields;
use Ramsey\Uuid\UuidInterface;
@@ -42,27 +40,18 @@ class DegradedUuidBuilder implements UuidBuilderInterface
*/
private $timeConverter;
/**
* @var CalculatorInterface
*/
private $calculator;
/**
* @param NumberConverterInterface $numberConverter The number converter to
* use when constructing the DegradedUuid
* @param TimeConverterInterface|null $timeConverter The time converter to use
* for converting timestamps extracted from a UUID to Unix timestamps
* @param CalculatorInterface|null $calculator The calculator to use for
* performing mathematical operations on UUIDs
*/
public function __construct(
NumberConverterInterface $numberConverter,
?TimeConverterInterface $timeConverter = null,
?CalculatorInterface $calculator = null
?TimeConverterInterface $timeConverter = null
) {
$this->numberConverter = $numberConverter;
$this->timeConverter = $timeConverter ?: new DegradedTimeConverter();
$this->calculator = $calculator ?: new BrickMathCalculator();
}
/**
@@ -81,8 +70,7 @@ class DegradedUuidBuilder implements UuidBuilderInterface
$fields,
$this->numberConverter,
$codec,
$this->timeConverter,
$this->calculator
$this->timeConverter
);
}
}
+3 -3
View File
@@ -324,12 +324,12 @@ class FeatureSet
private function buildUuidBuilder(bool $useGuids = false): UuidBuilderInterface
{
if ($useGuids) {
return new GuidBuilder($this->numberConverter, $this->timeConverter, $this->calculator);
return new GuidBuilder($this->numberConverter, $this->timeConverter);
}
return new FallbackBuilder([
new DefaultUuidBuilder($this->numberConverter, $this->timeConverter, $this->calculator),
new NonstandardUuidBuilder($this->numberConverter, $this->timeConverter, $this->calculator),
new DefaultUuidBuilder($this->numberConverter, $this->timeConverter),
new NonstandardUuidBuilder($this->numberConverter, $this->timeConverter),
]);
}
+2 -4
View File
@@ -17,7 +17,6 @@ namespace Ramsey\Uuid\Guid;
use Ramsey\Uuid\Codec\CodecInterface;
use Ramsey\Uuid\Converter\NumberConverterInterface;
use Ramsey\Uuid\Converter\TimeConverterInterface;
use Ramsey\Uuid\Math\CalculatorInterface;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\UuidInterface;
@@ -41,9 +40,8 @@ class Guid extends Uuid implements UuidInterface
Fields $fields,
NumberConverterInterface $numberConverter,
CodecInterface $codec,
TimeConverterInterface $timeConverter,
CalculatorInterface $calculator
TimeConverterInterface $timeConverter
) {
parent::__construct($fields, $numberConverter, $codec, $timeConverter, $calculator);
parent::__construct($fields, $numberConverter, $codec, $timeConverter);
}
}
+2 -13
View File
@@ -18,7 +18,6 @@ use Ramsey\Uuid\Builder\UuidBuilderInterface;
use Ramsey\Uuid\Codec\CodecInterface;
use Ramsey\Uuid\Converter\NumberConverterInterface;
use Ramsey\Uuid\Converter\TimeConverterInterface;
use Ramsey\Uuid\Math\CalculatorInterface;
use Ramsey\Uuid\UuidInterface;
/**
@@ -38,27 +37,18 @@ class GuidBuilder implements UuidBuilderInterface
*/
private $timeConverter;
/**
* @var CalculatorInterface
*/
private $calculator;
/**
* @param NumberConverterInterface $numberConverter The number converter to
* use when constructing the Guid
* @param TimeConverterInterface $timeConverter The time converter to use
* for converting timestamps extracted from a UUID to Unix timestamps
* @param CalculatorInterface $calculator The calculator to use for
* performing mathematical operations on UUIDs
*/
public function __construct(
NumberConverterInterface $numberConverter,
TimeConverterInterface $timeConverter,
CalculatorInterface $calculator
TimeConverterInterface $timeConverter
) {
$this->numberConverter = $numberConverter;
$this->timeConverter = $timeConverter;
$this->calculator = $calculator;
}
/**
@@ -77,8 +67,7 @@ class GuidBuilder implements UuidBuilderInterface
$fields,
$this->numberConverter,
$codec,
$this->timeConverter,
$this->calculator
$this->timeConverter
);
}
}
+2 -4
View File
@@ -17,7 +17,6 @@ namespace Ramsey\Uuid\Nonstandard;
use Ramsey\Uuid\Codec\CodecInterface;
use Ramsey\Uuid\Converter\NumberConverterInterface;
use Ramsey\Uuid\Converter\TimeConverterInterface;
use Ramsey\Uuid\Math\CalculatorInterface;
use Ramsey\Uuid\Uuid as Rfc4122Uuid;
use Ramsey\Uuid\UuidInterface;
@@ -32,9 +31,8 @@ class Uuid extends Rfc4122Uuid implements UuidInterface
Fields $fields,
NumberConverterInterface $numberConverter,
CodecInterface $codec,
TimeConverterInterface $timeConverter,
CalculatorInterface $calculator
TimeConverterInterface $timeConverter
) {
parent::__construct($fields, $numberConverter, $codec, $timeConverter, $calculator);
parent::__construct($fields, $numberConverter, $codec, $timeConverter);
}
}
+2 -13
View File
@@ -18,7 +18,6 @@ use Ramsey\Uuid\Builder\UuidBuilderInterface;
use Ramsey\Uuid\Codec\CodecInterface;
use Ramsey\Uuid\Converter\NumberConverterInterface;
use Ramsey\Uuid\Converter\TimeConverterInterface;
use Ramsey\Uuid\Math\CalculatorInterface;
use Ramsey\Uuid\UuidInterface;
/**
@@ -38,27 +37,18 @@ class UuidBuilder implements UuidBuilderInterface
*/
private $timeConverter;
/**
* @var CalculatorInterface
*/
private $calculator;
/**
* @param NumberConverterInterface $numberConverter The number converter to
* use when constructing the Nonstandard\Uuid
* @param TimeConverterInterface $timeConverter The time converter to use
* for converting timestamps extracted from a UUID to Unix timestamps
* @param CalculatorInterface $calculator The calculator to use for
* performing mathematical operations on UUIDs
*/
public function __construct(
NumberConverterInterface $numberConverter,
TimeConverterInterface $timeConverter,
CalculatorInterface $calculator
TimeConverterInterface $timeConverter
) {
$this->numberConverter = $numberConverter;
$this->timeConverter = $timeConverter;
$this->calculator = $calculator;
}
/**
@@ -78,8 +68,7 @@ class UuidBuilder implements UuidBuilderInterface
$fields,
$this->numberConverter,
$codec,
$this->timeConverter,
$this->calculator
$this->timeConverter
);
}
}
+2 -12
View File
@@ -22,7 +22,6 @@ use Ramsey\Uuid\Converter\TimeConverterInterface;
use Ramsey\Uuid\Exception\DateTimeException;
use Ramsey\Uuid\Exception\UnsupportedOperationException;
use Ramsey\Uuid\Fields\FieldsInterface;
use Ramsey\Uuid\Math\CalculatorInterface;
use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface;
/**
@@ -170,11 +169,6 @@ class Uuid implements UuidInterface
*/
protected $timeConverter;
/**
* @var CalculatorInterface
*/
protected $calculator;
/**
* Creates a universally unique identifier (UUID) from an array of fields
*
@@ -198,21 +192,17 @@ class Uuid implements UuidInterface
* UUID strings
* @param TimeConverterInterface $timeConverter The time converter to use
* for converting timestamps extracted from a UUID to unix timestamps
* @param CalculatorInterface $calculator The calculator to use for performing
* mathematical operations on UUIDs
*/
public function __construct(
Rfc4122FieldsInterface $fields,
NumberConverterInterface $numberConverter,
CodecInterface $codec,
TimeConverterInterface $timeConverter,
CalculatorInterface $calculator
TimeConverterInterface $timeConverter
) {
$this->fields = $fields;
$this->codec = $codec;
$this->numberConverter = $numberConverter;
$this->timeConverter = $timeConverter;
$this->calculator = $calculator;
}
public function __toString(): string
@@ -376,7 +366,7 @@ class Uuid implements UuidInterface
}
$unixTime = $this->timeConverter->convertTime(
$this->calculator->toIntegerValue($this->fields->getTimestamp())->toString()
$this->numberConverter->fromHex($this->fields->getTimestamp()->toString())
);
try {
+1 -3
View File
@@ -9,7 +9,6 @@ use Ramsey\Uuid\Builder\DefaultUuidBuilder;
use Ramsey\Uuid\Codec\CodecInterface;
use Ramsey\Uuid\Converter\NumberConverterInterface;
use Ramsey\Uuid\Converter\TimeConverterInterface;
use Ramsey\Uuid\Math\CalculatorInterface;
use Ramsey\Uuid\Test\TestCase;
use Ramsey\Uuid\Uuid;
@@ -19,10 +18,9 @@ class DefaultUuidBuilderTest extends TestCase
{
$numberConverter = Mockery::mock(NumberConverterInterface::class);
$timeConverter = Mockery::mock(TimeConverterInterface::class);
$calculator = Mockery::mock(CalculatorInterface::class);
$codec = Mockery::mock(CodecInterface::class);
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter, $calculator);
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter);
$fields = [
'time_low' => '754cd475',
+2 -5
View File
@@ -13,7 +13,6 @@ use Ramsey\Uuid\Converter\TimeConverterInterface;
use Ramsey\Uuid\Guid\Fields;
use Ramsey\Uuid\Guid\Guid;
use Ramsey\Uuid\Guid\GuidBuilder;
use Ramsey\Uuid\Math\CalculatorInterface;
use Ramsey\Uuid\Test\TestCase;
use Ramsey\Uuid\UuidInterface;
@@ -74,9 +73,8 @@ class GuidStringCodecTest extends TestCase
$codec = new GuidStringCodec($this->builder);
$numberConverter = Mockery::mock(NumberConverterInterface::class);
$timeConverter = Mockery::mock(TimeConverterInterface::class);
$calculator = Mockery::mock(CalculatorInterface::class);
$uuid = new Guid($fields, $numberConverter, $codec, $timeConverter, $calculator);
$uuid = new Guid($fields, $numberConverter, $codec, $timeConverter);
$bytes = $codec->encodeBinary($uuid);
@@ -89,8 +87,7 @@ class GuidStringCodecTest extends TestCase
$numberConverter = Mockery::mock(NumberConverterInterface::class);
$timeConverter = Mockery::mock(TimeConverterInterface::class);
$calculator = Mockery::mock(CalculatorInterface::class);
$builder = new GuidBuilder($numberConverter, $timeConverter, $calculator);
$builder = new GuidBuilder($numberConverter, $timeConverter);
$codec = new GuidStringCodec($builder);
$guid = $codec->decode($string);
+5 -11
View File
@@ -13,7 +13,6 @@ use Ramsey\Uuid\Converter\NumberConverterInterface;
use Ramsey\Uuid\Converter\TimeConverterInterface;
use Ramsey\Uuid\Exception\InvalidArgumentException;
use Ramsey\Uuid\Exception\UnsupportedOperationException;
use Ramsey\Uuid\Math\CalculatorInterface;
use Ramsey\Uuid\Rfc4122\Fields;
use Ramsey\Uuid\Test\TestCase;
use Ramsey\Uuid\Uuid;
@@ -85,8 +84,7 @@ class OrderedTimeCodecTest extends TestCase
$numberConverter = Mockery::mock(NumberConverterInterface::class);
$timeConverter = Mockery::mock(TimeConverterInterface::class);
$calculator = Mockery::mock(CalculatorInterface::class);
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter, $calculator);
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter);
$codec = new OrderedTimeCodec($builder);
$factory = new UuidFactory();
@@ -124,8 +122,7 @@ class OrderedTimeCodecTest extends TestCase
$numberConverter = Mockery::mock(NumberConverterInterface::class);
$timeConverter = Mockery::mock(TimeConverterInterface::class);
$calculator = Mockery::mock(CalculatorInterface::class);
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter, $calculator);
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter);
$codec = new OrderedTimeCodec($builder);
$factory = new UuidFactory();
@@ -143,8 +140,7 @@ class OrderedTimeCodecTest extends TestCase
$numberConverter = Mockery::mock(NumberConverterInterface::class);
$timeConverter = Mockery::mock(TimeConverterInterface::class);
$calculator = Mockery::mock(CalculatorInterface::class);
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter, $calculator);
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter);
$codec = new OrderedTimeCodec($builder);
$uuid = Mockery::mock(UuidInterface::class, [
@@ -166,8 +162,7 @@ class OrderedTimeCodecTest extends TestCase
$numberConverter = Mockery::mock(NumberConverterInterface::class);
$timeConverter = Mockery::mock(TimeConverterInterface::class);
$calculator = Mockery::mock(CalculatorInterface::class);
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter, $calculator);
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter);
$codec = new OrderedTimeCodec($builder);
$factory = new UuidFactory();
@@ -213,8 +208,7 @@ class OrderedTimeCodecTest extends TestCase
$numberConverter = Mockery::mock(NumberConverterInterface::class);
$timeConverter = Mockery::mock(TimeConverterInterface::class);
$calculator = Mockery::mock(CalculatorInterface::class);
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter, $calculator);
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter);
$codec = new OrderedTimeCodec($builder);
$factory = new UuidFactory();
+1 -3
View File
@@ -24,7 +24,6 @@ use Ramsey\Uuid\Generator\CombGenerator;
use Ramsey\Uuid\Generator\RandomGeneratorFactory;
use Ramsey\Uuid\Generator\RandomGeneratorInterface;
use Ramsey\Uuid\Guid\Guid;
use Ramsey\Uuid\Math\BrickMathCalculator;
use Ramsey\Uuid\Provider\Time\FixedTimeProvider;
use Ramsey\Uuid\Rfc4122\FieldsInterface;
use Ramsey\Uuid\Type\Time;
@@ -1408,14 +1407,13 @@ class UuidTest extends TestCase
{
$numberConverter = new BigNumberConverter();
$timeConverter = Mockery::mock(TimeConverterInterface::class);
$calculator = new BrickMathCalculator();
$timeConverter
->shouldReceive('convertTime')
->once()
->andReturn('foobar');
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter, $calculator);
$builder = new DefaultUuidBuilder($numberConverter, $timeConverter);
$codec = new StringCodec($builder);
$factory = new UuidFactory();