seb-c/alpha-increment

该软件包最新版本(1.0.0)没有提供许可证信息。

一个从经典的自动增量数字ID生成真正唯一字符串的库。

1.0.0 2016-11-19 17:01 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:24:56 UTC


README

AlphaIncrement是一个简单的库,允许您从增量ID生成真正唯一的字符串。

这并不旨在提供密码学安全,也不适用于安全目的。

如果您需要一种简单的方式来获取某种类型的唯一序列号,而不需要特别隐藏原始ID,这非常有用。

如您所见,结果中仍然存在某种模式,最终用户可能会猜测,但在大多数情况下不应成为问题。

基本使用

$ai = new AlphaIncrement();
echo $ai->encode(1); // prints "TKSAC"
echo $ai->encode(2); // prints "TKSAD"
echo $ai->encode(3); // prints "TKSAZ"
echo $ai->encode(42); // prints "TKSKY"
echo $ai->encode(314); // prints "TKSGB"
echo $ai->encode(7654321); // prints "9JXCC"

高级使用

您可以向构造函数传递三个参数

  • 结果字符串的长度(默认:5);
  • 字母表(用作字符串的字符列表)。默认:数字和大写字母。支持Unicode字符;
  • 您可以将此处传递为false来禁用字母表打乱,这是默认使用的,以提高结果的随机化。
$ai = new AlphaIncrement(4, '😀😃😉😋😎😴😕😓😞😇', false);
echo $ai->encode(1); // prints "😋😞😉😴"
echo $ai->encode(2); // prints "😋😞😉😕"
echo $ai->encode(3); // prints "😋😞😉😓"
echo $ai->encode(42); // prints "😋😞😉😞"
echo $ai->encode(314); // prints "😋😞😉😇"
echo $ai->encode(654321); // prints "😋😞😉😀"

大数字

当然,您无法将无限数量的ID放入大小有限的字符串中。当ID太大无法适应指定的尺寸时,从ID回退到较大字符串的方法是使字符串比预期的尺寸更大

$ai = new AlphaIncrement(3);
echo $ai->encode(10); // returns "SAT"
echo $ai->encode(42); // returns "SKY"
echo $ai->encode(7654321); // returns "9JXCC"
echo $ai->encode(PHP_INT_MAX); // returns "1UL1RDNFPP5OW"