Generate time based UUID, with custom format and length.
UUIDs follow alphabetical order, more suitable for database primary key.
Short UUID save more space, and little more eye candy.
Check digit can determine if an UUID is valid, maybe useful.
composer require fwolf/uuid:~1.1
Name | FQN | Length | Example |
---|---|---|---|
Base16 | Fwolf\Util\Uuid\Base16 | 36 | 57fbbc3d-afca-0001-5962-39f13698e4fe |
Base16WithCheckDigit | Fwolf\Util\Uuid\Base16WithCheckDigit | 36 | 57fbbc3d-afd6-0001-5962-66ede233d441 |
Base36 | Fwolf\Util\Uuid\Base36 | 25 | 1bjzaogobg01b0tjd6q2qx6t9 |
Base36Short | Fwolf\Util\Uuid\Base36Short | 16 | 1bjzaogok11ggcm5 |
Base62 | Fwolf\Util\Uuid\Base62 | 24 | 1BTD4N3MsO01qbPidY17hfOz |
Base62Short | Fwolf\Util\Uuid\Base62Short | 15 | 10L1XTQ9s1Ip2Og |
By inherit these classes and modify constant value, you can:
- Define length of each part
- Enable check digit
- Change of enable/disable separator between parts
use Fwolf\Util\Uuid\Base36;
$generator = new Base36();
$uuid = $generator->generate();
echo "Generated UUID: {$uuid}";
// Result: Generated UUID: 1bjzaogobg01b0tjd6q2qx6t9
There are some utility scripts in bin
directory:
explain.php
Disassemble UUID to parts and generated timefind-offset-base36.php
Find latest offset timestamp for Base36find-offset-base62Short.php
Find latest offset timestamp for Base36Short
Distribute under MIT License.