A tiny (179 bytes), secure URL-friendly unique string ID generator for JavaScript
Safe. It uses cryptographically strong random APIs and guarantees a proper distribution of symbols.
Small. Only 179 bytes (minified and gzipped). No dependencies. It uses Size Limit to control size.
Compact. It uses more symbols than UUID (A-Za-z0-9_-) and has the same number of unique options in just 21 symbols instead of 36.
Thanks awesome ai and his nanoid, this package is a copy in PHP! If you like nanoid and you want to use it in PHP, try me :D
Via Composer
$composer require hidehalo/nanoid-php
The main module uses URL-friendly symbols (A-Za-z0-9_-) and returns an ID with 21 characters (to have the same collisions probability as UUID v4).
use Hidehalo\Nanoid\Client;
use Hidehalo\Nanoid\GeneratorInterface;
$client = new Client();
# default random generator
echo $client->generateId($size = 21);
# more safer random generator
echo $client->generateId($size = 21, $mode = Client::MODE_DYNAMIC);
echo $client->formattedId($alphabet = '0123456789abcdefg', $size = 21);
Alphabet must contain 256 symbols or less. Otherwise, the generator will not be secure.
# PS: anonymous class is new feature when PHP_VERSION >= 7.0
echo $client->formattedId($alphabet = '0123456789abcdefg', $size = 21,
new class implements GeneratorInterface {
/**
* @inheritDoc
*/
public function random($size)
{
//TODO: implemenation ...
}
});
random
callback must accept the array size and return an array with random numbers.If you want to use the same URL-friendly symbols with
format
, you can get default alphabet from theurl
module:
Please see CoreInterface::random(...)
for the core random API prototype and notes
Please see Examples for more information on detailed usage.
Please see CHANGELOG for more information on what has changed recently.
$composer test
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
If you have any issues, just feel free and open it in this repository, thx!
The MIT License (MIT). Please see License File for more information.