Commit Graph

119 Commits

Author SHA1 Message Date
Ben Ramsey d04a1b479e Merge branch '4.x' into 5.x 2023-04-15 18:38:51 -05:00
Maximilian Bösing bf2bee216a Add explicit Stringable interface to UuidInterface (#491)
Even tho, the `Stringable` interface is implicit on all objects containing the method `__toString`, it is recommended by PHP to explicitly setting that interface.

From php.net documentation:
> [...] Unlike most interfaces, **Stringable** is implicitly present on any class that has the magic `__toString()` method defined, although it can and should be declared explicitly.

Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2023-02-07 10:14:23 -06:00
Ben Ramsey c94add912b Merge branch '4.x' into 5.x 2023-01-01 15:15:10 -06:00
Marcel Berteler 5e24bfd390 feat: add Uuid:fromHexadecimal() (#309)
Co-authored-by: mberteler <marcel.berteler@capetown.gov.za>
Co-authored-by: Ben Ramsey <ben@benramsey.com>
2022-12-19 15:18:32 -06:00
Ben Ramsey 55d8833b06 feat: support version 8, custom UUIDs 2022-11-05 17:57:29 -05:00
Ben Ramsey 0ba1ffb029 fix: ensure monotonicity for version 7 UUIDs 2022-11-05 16:29:26 -05:00
Ben Ramsey 685c2f3f23 feat: support max UUIDs 2022-09-14 20:44:24 -05:00
Ben Ramsey 4f4deb1dd6 feat: add UUIDv7 documentation and customization 2022-09-14 18:21:10 -05:00
Ben Ramsey aa1e488afa feat: support version 7 (Unix Epoch time) UUIDs 2022-09-13 22:13:33 -05:00
Ben Ramsey 8c0a06654e feat: introduce Version enum and use instead of constants 2022-08-12 20:10:51 -05:00
Ben Ramsey 3d3bf1b518 Update types throughout the code base 2022-08-09 18:23:17 -05:00
Ben Ramsey f1891183f9 Upgrade PHPStan 2022-08-05 14:46:56 -05:00
Ben Ramsey dec678d60b feat: remove deprecated Serializable interface 2022-04-01 17:41:58 -05:00
Ben Ramsey 13edf70fc9 feat: introduce Variant enum and use instead of constants 2022-04-01 17:41:58 -05:00
Ben Ramsey d2ae388821 Remove deprecated getDateTime() method 2022-03-27 22:52:01 -05:00
Ben Ramsey 5b98a2fee1 Introduce TimeBasedInterface for UUIDs derived from time 2022-03-27 22:50:14 -05:00
Ben Ramsey cc4df59001 Remove deprecated getVersion() method 2022-03-27 21:47:55 -05:00
Ben Ramsey 8595a6d8c1 Remove deprecated getVariant() method 2022-03-27 21:28:55 -05:00
Ben Ramsey 506a781667 Remove deprecated getFieldsHex() method 2022-03-27 20:40:12 -05:00
Ben Ramsey 67abb86aaf Remove remaining deprecated getClockSeq*() methods 2022-03-27 20:32:00 -05:00
Ben Ramsey e4c7ea0755 Remove deprecated getNode*() methods 2022-03-27 20:22:45 -05:00
Ben Ramsey 23d54b85cb Remove deprecated getTimestamp*() methods 2022-03-27 20:05:08 -05:00
Ben Ramsey b0b5c12bac Remove deprecated getTimeMid*() methods 2022-03-27 19:45:17 -05:00
Ben Ramsey 045c33ba3b Remove deprecated getTimeLow*() methods 2022-03-27 19:34:45 -05:00
Ben Ramsey c47a71f2b1 Remove deprecated getTimeHiAndVersion*() methods 2022-03-27 19:20:40 -05:00
Ben Ramsey eed2aecc17 Remove deprecated getMostSignificantBits*() methods 2022-03-27 18:58:06 -05:00
Ben Ramsey 5541b3d045 Remove deprecated getLeastSignificantBits*() methods 2022-03-27 18:51:18 -05:00
Ben Ramsey f810c0a50c Remove deprecated getClockSequenceHex() method 2022-03-27 18:44:47 -05:00
Ben Ramsey ddb4ce0aca Remove deprecated getClockSeqLowHex() method 2022-03-27 18:32:51 -05:00
Ben Ramsey 1d4077d213 Remove deprecated getClockSeqHiAndReservedHex() method 2022-03-27 16:37:53 -05:00
Ben Ramsey 18688488e1 Remove deprecated "degraded" classes that used moontoast/math 2022-03-27 13:51:14 -05:00
hubipe e3e9179f27 LazyUuidFromString for valid UUIDs in uppercase (#401) 2022-01-29 13:05:59 -06:00
Chris Smith ef1eb74c82 Add test covering Uuid::fromString() being called with empty string 2021-08-09 12:55:31 +01:00
Ben Ramsey d7379b67af test: update exception message for PHP 8.1 2021-08-06 14:35:42 -05:00
Ben Ramsey c005f69d6e chore: update package files 2021-08-06 14:05:57 -05:00
Bilge 7947413a76 Use assertSame instead of assertEquals. 2020-08-23 13:53:19 +01:00
Marco Pivetta b805572537 Ensure that Uuid::uuidX() generators produce instances equivalent to Uuid::fromString() and Uuid::fromBytes()
With this change, `Uuid::uuid1()`, `Uuid::uuid2()` and so forth now produce a `LazyUuidFromString` instance, which
is both more memory efficient and comparable to `Uuid::fromString()` instances in other tools, such as within
PHPUnit's `Assertion::assertEqual()`, which would reject any two objects not matching each other's types.

Before this patch, `Assertion::assertEquals(Uuid::uuid5(...), Uuid::fromString(...))` would always fail due to
different subtypes produced by the two factory methods.
2020-07-09 13:57:30 +02:00
Marco Pivetta 1f0cd71d93 Applied fixes and suppressions (sadly) to match psalm/phpstan code quality guidelines
We have a lot of deprecated API in here which shouldn't exist in first place, but that
will luckily disappear with v5.0.0 :-)
2020-07-09 13:57:30 +02:00
Marco Pivetta 1ce3f55673 Applied automated CS fixes according to project CS settings 2020-07-09 13:57:30 +02:00
Marco Pivetta 569e93ac4e Re-implemented Uuid::fromString() so it produces a LazyUuidFromString when possible
This should speed up `Uuid::fromString()` massively, leading to much shallower execution
paths when `toString()` and similar simplistic API is required.
2020-07-09 13:57:30 +02:00
Ben Ramsey 22ee596348 Make serialize(UuidInterface) more compact
Resolves #318
2020-07-08 15:27:19 -05:00
Ben Ramsey ba7c1c17ce Add more tests for UuidV6 2020-02-24 15:14:57 -06:00
Ben Ramsey fec93008bc Accept Type\Hexadecimal for the first parameter to uuid1() 2020-02-24 14:34:40 -06:00
Ben Ramsey ab3c89fb8e Change the $node parameter from mixed to ?Hexadecimal 2020-02-24 13:44:03 -06:00
Ben Ramsey cc2bf6f8ef Support version 6 UUIDs
See the following:

* https://github.com/uuid6/uuid6-ietf-draft
* http://gh.peabody.io/uuidv6/
2020-02-22 22:41:15 -06:00
Ben Ramsey 65b0c091c0 Deprecate VALID_PATTERN, UUID_TYPE_IDENTIFIER; suggest replacements 2020-02-21 13:37:06 -06:00
Ben Ramsey a7cf07a2d8 Fix microsecond rounding error on 32-bit systems 2020-02-21 02:51:31 -06:00
Ben Ramsey e0ff858ff6 Return Hexadecimal from getHex() and IntegerValue from getInteger() 2020-02-21 01:40:14 -06:00
Ben Ramsey 7af4814017 Round microseconds to six digits when getting DateTime from v1 UUIDs 2020-02-21 01:17:05 -06:00
Ben Ramsey 4a44aeab2e Add a test for the Unix epoch with v1 UUIDs 2020-02-20 17:23:32 -06:00