pugx / shortid-php
PHP 中 shortid 的实现
v1.1.0
2022-10-02 13:34 UTC
Requires
- php: ^7.1 || ^8.0
- ext-json: *
- paragonie/random-lib: ^2.0
- symfony/polyfill-mbstring: ^1.19
Requires (Dev)
- dg/bypass-finals: ^1.3
- phpunit/phpunit: ^7.5 || ^8.5 || ^9.5
README
该库是 PHP 中 ShortId 的实现。
基本用法
只需调用 PUGX\Shortid\Shortid::generate()
即可获取长度为 7 的随机字符串,例如 "MfiYIvI"。
use PUGX\Shortid\Shortid; require_once __DIR__.'/vendor/autoload.php'; $id = Shortid::generate();
高级用法
在以下示例中,您可以看到如何更改基本字母表和默认长度。
默认字母表使用所有字母(小写和大写)、所有数字、下划线和连字符。
use PUGX\Shortid\Factory; use PUGX\Shortid\Shortid; require_once __DIR__.'/vendor/autoload.php'; $factory = new Factory(); // alphabet string must be 64 characters long $factory->setAlphabet('é123456789àbcdefghìjklmnòpqrstùvwxyzABCDEFGHIJKLMNOPQRSTUVWX.!@|'); // length must be between 2 and 20 (default is 7) // of course, a lower length is increasing clashing probability $factory->setLength(9); Shortid::setFactory($factory); $id = Shortid::generate();
作为替代,您可以自定义单个生成
use PUGX\Shortid\Shortid; require_once __DIR__.'/vendor/autoload.php'; $id9 = Shortid::generate(9, 'é123456789àbcdefghìjklmnòpqrstùvwxyzABCDEFGHIJKLMNOPQRSTUVWX.!@|'); $id5 = Shortid::generate(5);
更易读的字符串
有时,您想避免一些歧义字符,如 B
/8
或 I
/l
(大写/小写)。在这种情况下,您可以将第三个参数 true
传递给 generate
方法。请注意,在这种情况下,将忽略字母表,因此传递一个空字母表是有意义的。
示例
use PUGX\Shortid\Shortid; require_once __DIR__.'/vendor/autoload.php'; $id = Shortid::generate(7, null, true);
预定义值
如果您需要一个确定性的字符串而不是随机字符串,可以直接调用类构造函数。这可能在需要为测试目的提供预定义数据时很有用。
use PUGX\Shortid\Shortid; require_once __DIR__.'/vendor/autoload.php'; $myFixedId = new Shortid('5h0r71d'); $anotherFixedId = new Shortid('fooBarZ');
Doctrine
如果您想使用 ShortId 与 Doctrine ORM 一起使用,请参阅 ShortId Doctrine 类型。
Doctrine 和 Symfony
如果您想使用 ShortId 与 Doctrine ORM 和 Symfony 框架一起使用,请参阅 ShortId Doctrine 类型包。
mbstring 扩展
该库使用 polyfill,因此可以在没有 mbstring 原生扩展的环境中使用。
如果您的环境提供了这样的扩展,您可以通过配置 composer.json
中的 replace 条目来避免安装 polyfill。