diff --git a/src/DegradedUuid.php b/src/DegradedUuid.php index a2b5e5a..388cd9f 100644 --- a/src/DegradedUuid.php +++ b/src/DegradedUuid.php @@ -14,7 +14,7 @@ namespace Ramsey\Uuid; -use DateTime; +use DateTimeImmutable; use Moontoast\Math\BigNumber; use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; use Ramsey\Uuid\Exception\UnsupportedOperationException; @@ -38,7 +38,7 @@ class DegradedUuid extends Uuid $time = $this->numberConverter->fromHex($this->getTimestampHex()); $unixTime = $this->timeConverter->convertTime($time); - return new DateTime("@{$unixTime}"); + return new DateTimeImmutable("@{$unixTime}"); } /** diff --git a/src/Uuid.php b/src/Uuid.php index 8e24ea4..7bc2410 100644 --- a/src/Uuid.php +++ b/src/Uuid.php @@ -14,7 +14,7 @@ namespace Ramsey\Uuid; -use DateTime; +use DateTimeImmutable; use Exception; use InvalidArgumentException; use Ramsey\Uuid\Codec\CodecInterface; @@ -360,7 +360,7 @@ class Uuid implements UuidInterface $unixTime = $this->timeConverter->convertTime($this->getTimestamp()); - return new DateTime("@{$unixTime}"); + return new DateTimeImmutable("@{$unixTime}"); } /** diff --git a/src/UuidInterface.php b/src/UuidInterface.php index 462fea3..5af050f 100644 --- a/src/UuidInterface.php +++ b/src/UuidInterface.php @@ -14,7 +14,7 @@ namespace Ramsey\Uuid; -use DateTime; +use DateTimeInterface; use JsonSerializable; use Ramsey\Uuid\Converter\NumberConverterInterface; use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; @@ -118,14 +118,14 @@ interface UuidInterface extends JsonSerializable, Serializable public function getClockSequenceHex(); /** - * Returns a PHP `DateTime` object representing the timestamp associated - * with this UUID. + * Returns a PHP object that implements `DateTimeInterface` representing + * the timestamp associated with this UUID. * * The timestamp value is only meaningful in a time-based UUID, which * has version type 1. If this UUID is not a time-based UUID then * this method throws `UnsupportedOperationException`. * - * @return DateTime A PHP DateTime representation of the date + * @return DateTimeInterface A PHP DateTimeImmutable representation of the date * @throws UnsupportedOperationException If this UUID is not a version 1 UUID * @throws UnsatisfiedDependencyException if called in a 32-bit system and * `Moontoast\Math\BigNumber` is not present diff --git a/tests/UuidTest.php b/tests/UuidTest.php index 213e227..121e069 100644 --- a/tests/UuidTest.php +++ b/tests/UuidTest.php @@ -3,6 +3,7 @@ namespace Ramsey\Uuid\Test; use InvalidArgumentException; +use Moontoast\Math\BigNumber; use PHPUnit\Framework\MockObject\MockObject; use Ramsey\Uuid\Codec\TimestampFirstCombCodec; use Ramsey\Uuid\Codec\TimestampLastCombCodec; @@ -34,7 +35,7 @@ class UuidTest extends TestCase public function testFromString() { $uuid = Uuid::fromString('ff6f8cb0-c57d-11e1-9b21-0800200c9a66'); - $this->assertInstanceOf('\Ramsey\Uuid\Uuid', $uuid); + $this->assertInstanceOf(Uuid::class, $uuid); $this->assertEquals('ff6f8cb0-c57d-11e1-9b21-0800200c9a66', $uuid->toString()); } @@ -51,7 +52,7 @@ class UuidTest extends TestCase $guid = Uuid::fromString('b08c6fff-7dc5-e111-9b21-0800200c9a66'); - $this->assertInstanceOf('\Ramsey\Uuid\Uuid', $guid); + $this->assertInstanceOf(Uuid::class, $guid); // UUID's and GUID's share the same textual representation $this->assertEquals($uuid->toString(), $guid->toString()); // But not the same binary representation (this assertion is valid on little endian hosts @@ -73,7 +74,7 @@ class UuidTest extends TestCase $guid = Uuid::fromString('b08c6fff-7dc5-e111-9b21-0800200c9a66'); - $this->assertInstanceOf('\Ramsey\Uuid\Uuid', $guid); + $this->assertInstanceOf(Uuid::class, $guid); // UUID's and GUID's share the same textual representation $this->assertEquals($uuid->toString(), $guid->toString()); // But not the same binary representation (this assertion is valid on little endian hosts @@ -84,7 +85,7 @@ class UuidTest extends TestCase public function testFromStringWithCurlyBraces() { $uuid = Uuid::fromString('{ff6f8cb0-c57d-11e1-9b21-0800200c9a66}'); - $this->assertInstanceOf('\Ramsey\Uuid\Uuid', $uuid); + $this->assertInstanceOf(Uuid::class, $uuid); $this->assertEquals('ff6f8cb0-c57d-11e1-9b21-0800200c9a66', $uuid->toString()); } @@ -109,7 +110,7 @@ class UuidTest extends TestCase public function testFromStringWithUrn() { $uuid = Uuid::fromString('urn:uuid:ff6f8cb0-c57d-11e1-9b21-0800200c9a66'); - $this->assertInstanceOf('\Ramsey\Uuid\Uuid', $uuid); + $this->assertInstanceOf(Uuid::class, $uuid); $this->assertEquals('ff6f8cb0-c57d-11e1-9b21-0800200c9a66', $uuid->toString()); } @@ -118,7 +119,7 @@ class UuidTest extends TestCase public function testGetBytes() { $uuid = Uuid::fromString('ff6f8cb0-c57d-11e1-9b21-0800200c9a66'); - $this->assertEquals(16, strlen($uuid->getBytes())); + $this->assertEquals(16, \strlen($uuid->getBytes())); $this->assertEquals('/2+MsMV9EeGbIQgAIAyaZg==', base64_encode($uuid->getBytes())); } @@ -182,22 +183,22 @@ class UuidTest extends TestCase { // Check a recent date $uuid = Uuid::fromString('ff6f8cb0-c57d-11e1-9b21-0800200c9a66'); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals('2012-07-04T02:14:34+00:00', $uuid->getDateTime()->format('c')); // Check an old date $uuid = Uuid::fromString('0901e600-0154-1000-9b21-0800200c9a66'); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals('1582-10-16T16:34:04+00:00', $uuid->getDateTime()->format('c')); // Check a future date $uuid = Uuid::fromString('ff9785f6-ffff-1fff-9669-00007ffffffe'); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals('5236-03-31T21:21:00+00:00', $uuid->getDateTime()->format('c')); // Check the oldest date $uuid = Uuid::fromString('00000000-0000-1000-9669-00007ffffffe'); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals('1582-10-15T00:00:00+00:00', $uuid->getDateTime()->format('c')); } @@ -210,22 +211,22 @@ class UuidTest extends TestCase // Check a recent date $uuid = Uuid::fromString('ff6f8cb0-c57d-11e1-9b21-0800200c9a66'); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals('2012-07-04T02:14:34+00:00', $uuid->getDateTime()->format('c')); // Check an old date $uuid = Uuid::fromString('0901e600-0154-1000-9b21-0800200c9a66'); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals('1582-10-16T16:34:04+00:00', $uuid->getDateTime()->format('c')); // Check a future date $uuid = Uuid::fromString('ff9785f6-ffff-1fff-9669-00007ffffffe'); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals('5236-03-31T21:21:00+00:00', $uuid->getDateTime()->format('c')); // Check the oldest date $uuid = Uuid::fromString('00000000-0000-1000-9669-00007ffffffe'); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals('1582-10-15T00:00:00+00:00', $uuid->getDateTime()->format('c')); } @@ -238,22 +239,22 @@ class UuidTest extends TestCase // Check a recent date $uuid = Uuid::fromString('ff6f8cb0-c57d-11e1-9b21-0800200c9a66'); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals('2012-07-04T02:14:34+00:00', $uuid->getDateTime()->format('c')); // Check an old date $uuid = Uuid::fromString('0901e600-0154-1000-9b21-0800200c9a66'); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals('1582-10-16T16:34:04+00:00', $uuid->getDateTime()->format('c')); // Check a future date $uuid = Uuid::fromString('ff9785f6-ffff-1fff-9669-00007ffffffe'); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals('5236-03-31T21:21:00+00:00', $uuid->getDateTime()->format('c')); // Check the oldest date $uuid = Uuid::fromString('00000000-0000-1000-9669-00007ffffffe'); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals('1582-10-15T00:00:00+00:00', $uuid->getDateTime()->format('c')); } @@ -342,7 +343,7 @@ class UuidTest extends TestCase /** @var Uuid $uuid */ $uuid = Uuid::fromString('ff6f8cb0-c57d-11e1-9b21-0800200c9a66'); - $this->assertInstanceOf('Moontoast\Math\BigNumber', $uuid->getLeastSignificantBits()); + $this->assertInstanceOf(BigNumber::class, $uuid->getLeastSignificantBits()); $this->assertEquals('11178224546741000806', $uuid->getLeastSignificantBits()->getValue()); } @@ -387,7 +388,7 @@ class UuidTest extends TestCase /** @var Uuid $uuid */ $uuid = Uuid::fromString('ff6f8cb0-c57d-11e1-9b21-0800200c9a66'); - $this->assertInstanceOf('Moontoast\Math\BigNumber', $uuid->getMostSignificantBits()); + $this->assertInstanceOf(BigNumber::class, $uuid->getMostSignificantBits()); $this->assertEquals('18406084892941947361', $uuid->getMostSignificantBits()->getValue()); } @@ -720,8 +721,8 @@ class UuidTest extends TestCase public function testUuid1() { $uuid = Uuid::uuid1(); - $this->assertInstanceOf('\Ramsey\Uuid\Uuid', $uuid); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(Uuid::class, $uuid); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals(2, $uuid->getVariant()); $this->assertEquals(1, $uuid->getVersion()); } @@ -734,8 +735,8 @@ class UuidTest extends TestCase /** @var Uuid $uuid */ $uuid = Uuid::uuid1(0x0800200c9a66, 0x1669); - $this->assertInstanceOf('\Ramsey\Uuid\Uuid', $uuid); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(Uuid::class, $uuid); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals(2, $uuid->getVariant()); $this->assertEquals(1, $uuid->getVersion()); $this->assertEquals(5737, $uuid->getClockSequence()); @@ -750,8 +751,8 @@ class UuidTest extends TestCase /** @var Uuid $uuid */ $uuid = Uuid::uuid1('7160355e'); - $this->assertInstanceOf('\Ramsey\Uuid\Uuid', $uuid); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(Uuid::class, $uuid); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals(2, $uuid->getVariant()); $this->assertEquals(1, $uuid->getVersion()); $this->assertEquals('00007160355e', $uuid->getNodeHex()); @@ -768,8 +769,8 @@ class UuidTest extends TestCase /** @var Uuid $uuid */ $uuid = Uuid::uuid1('71B0aD5e'); - $this->assertInstanceOf('\Ramsey\Uuid\Uuid', $uuid); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(Uuid::class, $uuid); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals(2, $uuid->getVariant()); $this->assertEquals(1, $uuid->getVersion()); $this->assertEquals('000071b0ad5e', $uuid->getNodeHex()); @@ -785,8 +786,8 @@ class UuidTest extends TestCase { /** @var Uuid $uuid */ $uuid = Uuid::uuid1(0x7fffffff, 0x1669); - $this->assertInstanceOf('\Ramsey\Uuid\Uuid', $uuid); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(Uuid::class, $uuid); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals(2, $uuid->getVariant()); $this->assertEquals(1, $uuid->getVersion()); $this->assertEquals(5737, $uuid->getClockSequence()); @@ -827,8 +828,8 @@ class UuidTest extends TestCase Uuid::setFactory(new UuidFactory(new FeatureSet(false, false, false, true))); $uuid = Uuid::uuid1(); - $this->assertInstanceOf('\Ramsey\Uuid\Uuid', $uuid); - $this->assertInstanceOf('\DateTime', $uuid->getDateTime()); + $this->assertInstanceOf(Uuid::class, $uuid); + $this->assertInstanceOf(\DateTimeInterface::class, $uuid->getDateTime()); $this->assertEquals(2, $uuid->getVariant()); $this->assertEquals(1, $uuid->getVersion()); } @@ -898,7 +899,6 @@ class UuidTest extends TestCase /** * Tests that generated UUID's using timestamp last COMB are sequential - * @throws \Exception */ public function testUuid4TimestampLastComb() { @@ -930,7 +930,6 @@ class UuidTest extends TestCase /** * Tests that generated UUID's using timestamp first COMB are sequential - * @throws \Exception */ public function testUuid4TimestampFirstComb() {