Ben Ramsey
f965293da9
Specify cache locations for build tools
2020-02-08 13:13:47 -06:00
Ben Ramsey
0bff9e8660
Add NameGeneratorInterface and generators for v3 and v5 UUIDs
2020-02-08 13:12:20 -06:00
Ben Ramsey
e5357f2c8a
Add missing native type hints to test method
2020-02-03 16:07:38 -06:00
Ben Ramsey
2e420f94c4
Revert "Suppress MissingNativeTypeHint error from slevomat/coding-standard"
...
This reverts commit e269c16cd4 .
This issue is fixed in slevomat/coding-standard 6.1.4. See thread at
https://github.com/slevomat/coding-standard/issues/883
2020-02-03 16:01:43 -06:00
Marco Pivetta
c7f71244f3
Imported pecl/uuid constants
2020-02-03 13:15:35 -06:00
Marco Pivetta
a252f29847
Import used functions and constants via use statement to disallow ambiguity for compiler/static-analysis
...
As documented in https://wiki.php.net/rfc/use_global_elements , the engine (by default) does a local namespace
lookup, then falls back to global namespace when first calling a global function referenced in namespaced code,
unless that function is referenced via fully qualified name (FQN).
By using the FQN, the actual symbol can be looked up at compile-time, both by the PHP engine and by static analysis
tooling, allowing for compiler (in particular) optimizations to replace known hot-path functions with specialized opcodes.
Sadly, no actual benchmark at hand: the improvements can be minimal or massive, depending on where this library is
used (tight loops being most relevant).
2020-02-03 13:15:35 -06:00
Marco Pivetta
598b47d07f
Refining type of producing a string that can be declared as non-empty-string
2020-02-03 11:05:36 -06:00
Ben Ramsey
5fa4eb4f17
Add fromDateTime() to create version 1 UUIDs from DateTime instances
...
Fixes #28
2020-02-03 00:48:41 -06:00
Ben Ramsey
e269c16cd4
Suppress MissingNativeTypeHint error from slevomat/coding-standard
2020-02-02 18:38:03 -06:00
Ben Ramsey
80a7be00b3
Return Hexadecimal type from TimeConverterInterface::calculateTime()
2020-01-21 23:28:10 -06:00
Ben Ramsey
4963f2320a
Optimize codec algorithms
2020-01-21 22:17:32 -06:00
Ben Ramsey
19f01c7985
No longer set variant/version bits inside the time generator
2020-01-21 16:38:07 -06:00
Ben Ramsey
bf237a1962
Change UuidBuilderInterface::build() to accept bytes instead of fields
2020-01-21 15:49:18 -06:00
Ben Ramsey
13aaa217fa
Add specific validator for RFC 4122 variant UUIDs
2020-01-20 21:06:37 -06:00
Ben Ramsey
7ea7e4282e
Validate fields passed to specific UUID version classes
2020-01-20 21:05:06 -06:00
Ben Ramsey
a5c7314f8d
Fix string passed to DateTimeImmutable
2020-01-20 21:04:26 -06:00
Ben Ramsey
5d7c0f2210
Move files to clean up project root directory
2020-01-19 23:48:55 -06:00
Ben Ramsey
a8d52100de
Support microtime in returned DateTimeInterface instances
...
Fixes #90 and supersedes #93 .
2020-01-19 23:21:48 -06:00
Ben Ramsey
3c975dd194
Add v2() convenience function for version 2 UUIDs
2020-01-18 18:45:00 -06:00
Ben Ramsey
268e66aad8
Add static Uuid::uuid2() method
2020-01-18 14:14:47 -06:00
Ben Ramsey
72a2312f62
Support generation of version 2 (DCE Security) UUIDs
2020-01-18 12:14:01 -06:00
Ben Ramsey
8202946225
Add NilUuid concrete class to represent nil UUIDs
2020-01-18 12:14:01 -06:00
Ben Ramsey
959dc2a9b0
Refactor tests for GenericValidator
2020-01-18 12:14:01 -06:00
Ben Ramsey
d21a3e3875
Add tests to ensure static methods return specific UUID types
2020-01-18 12:14:01 -06:00
Ben Ramsey
0b64d6d995
Optimize how OrderedTimeCodec rearranges bytes and validates instances
2020-01-18 12:14:01 -06:00
Ben Ramsey
12a2b0680d
Add individual concrete classes for each version of RFC 4122 UUID
2020-01-18 12:14:01 -06:00
Ben Ramsey
5d1f106882
Rename Validator\Validator to Validator\GenericValidator
2020-01-18 12:14:00 -06:00
Ben Ramsey
2ad77d9ca7
Remove CalculatorInterface as a Uuid constructor parameter
2020-01-18 12:14:00 -06:00
Ben Ramsey
52f764c284
Change first constructor param in Uuid to Rfc4122\FieldsInterface
2020-01-18 12:14:00 -06:00
Ben Ramsey
360261d617
Deprecate all the fields methods on UuidInterface and Uuid
2020-01-18 12:14:00 -06:00
Ben Ramsey
10624f64a1
Change return type of Uuid::getFields() to FieldsInterface
2020-01-18 12:14:00 -06:00
Ben Ramsey
c11c023796
Address static analysis issues and add additional tests
2020-01-18 12:13:59 -06:00
Ben Ramsey
26a02a93db
Restore ExpectedBehaviorTest as close to 3.x version as possible
2020-01-18 12:13:59 -06:00
Ben Ramsey
d7c6f28761
Clean up test names in FeatureSetTest
2020-01-18 12:13:59 -06:00
Ben Ramsey
f5cfb5f57d
Split known v3 and v5 UUID tests into providers
2020-01-18 12:13:59 -06:00
Ben Ramsey
deb888c4a3
Set floating-point precision for tests to "14"
2020-01-18 12:13:59 -06:00
Ben Ramsey
37f72746a7
Remove checks that are no longer necessary
2020-01-18 12:13:59 -06:00
Ben Ramsey
c80ad2606f
Deprecate degraded UUIDs; they are no longer necessary
2020-01-18 12:13:59 -06:00
Ben Ramsey
d543895369
Return string integers instead of int integers
2020-01-18 12:13:58 -06:00
Ben Ramsey
4125885862
Add getTime() to TimeProviderInterface and mark currentTime() deprecated
2020-01-18 12:13:58 -06:00
Ben Ramsey
1e26916bf6
Add getTimestamp() and getClockSeq() to FieldsInterface
2020-01-18 12:13:58 -06:00
Ben Ramsey
d665ec8e88
Provide a fallback time converter in case of integers too big
2020-01-18 12:13:58 -06:00
Ben Ramsey
63942c393d
Remove Gmp converters; the generic converters are preferred
2020-01-18 12:13:58 -06:00
Ben Ramsey
3546a86f7d
Deprecate BigNumberConverter and BigNumberTimeConverter
2020-01-18 12:13:58 -06:00
Ben Ramsey
9b2c93c5b5
Add generic converters for numbers and time
2020-01-18 12:13:58 -06:00
Ben Ramsey
cd03f39e9c
Depend on brick/math for arbitrary-precision math
2020-01-18 12:13:58 -06:00
Ben Ramsey
07fc6b8f6f
Add Hexadecimal, IntegerValue, and Time types
2020-01-18 12:13:57 -06:00
Ben Ramsey
668b6ab9a2
Use the codec to encode to binary when using Uuid::getBytes()
2020-01-18 12:13:57 -06:00
Ben Ramsey
4d1db4d090
Clean up class naming conventions
2020-01-18 12:13:57 -06:00
Ben Ramsey
ebaa04a6b2
Improve coverage and unit tests for fields, GUIDs, and nonstandard UUIDs
2020-01-18 12:13:57 -06:00