iliain / php-zoo-ids
bryanmylee的zoo-ids的PHP版本,最初是用JavaScript编写的
1.0.0
2022-11-21 07:02 UTC
Requires
- php: ^7
README
这是一个PHP版本的 bryanmylee的zoo-ids,最初是用JavaScript编写的,而它又是受到了gfycat.com的URL ID的启发。对于使用JavaScript的前端或后端,我强烈推荐您使用他们的包!
生成由形容词和动物名称组成的 可预测 和 唯一 的标识符,并能够播种随机标识符。
ID范围
目前有1347个形容词和221种动物。使用的形容词越多,可用的ID组合就越多。
使用2个形容词时,有400,984,389个可能的唯一ID。
使用3个形容词时,有540,125,971,983个可能的唯一ID。
安装
$ composer require iliain/php-zoo-ids
使用
示例
use Iliain\ZooIDs\UsernameRandomizer; $randomizer = new UsernameRandomizer(); $randomizer->generateID('short seed'); // KnobbyNauticalKingfisher // Defaults to the current time if seed is null. $randomizer->generateID(null, 2, '🍓', 'lowercase'); // enchanted🍓narrow🍓wallaby
如果您想控制名词和形容词的列表,您可以提供自己的
$randomizer = new UsernameRandomizer(['Jumping','Flying','Running','Waving'], ['Rock', 'Paper', 'Scissors']); $randomizer->generateID(); // JumpingRunningScissors $randomizer->setAdjectives(['Diving','Walking','Spinning']); $randomizer->generateID(); // WalkingDivingScissors $randomizer->setNouns(['Koala', 'Dog']); $randomizer->generateID(); // WalkingDivingKoala
文档
new UsernameRandomizer($adjectives, $nouns)
adjectives: array
用于生成的形容词数组。如果没有指定,则默认为预提供的列表。
nouns: array
用于生成的名词数组。如果没有指定,则默认为预提供的列表。
generateID($seed, $numAdjectives, $delimiter, $caseStyle)
seed: string|int
用于生成id的种子。这允许我们生成可预测、但随机且唯一的标识符。
默认为当前时间。
numAdjectives: int
用于标识符中的形容词数量。
默认为 2
。
delimiter: string
用于单词之间的分隔符。分隔符也将用于多词形容词之间。
默认为 ''
。
caseStyle: string
单词的样式。可能的选项有 'titlecase'
、'camelcase'
、'uppercase'
、'lowercase'
和 'togglecase'
。
generateID($seed, $numAdjectives, $delimiter, 'titlecase'); // FineAntiqueElk generateID($seed, $numAdjectives, $delimiter, 'camelcase'); // pertinentPoshGoldfinch generateID($seed, $numAdjectives, $delimiter, 'uppercase'); // PIERCINGRESPONSIBLECAMEL generateID($seed, $numAdjectives, $delimiter, 'lowercase'); // imaginarywingedsalamander generateID($seed, $numAdjectives, $delimiter, 'togglecase'); // sTuNnInGdEsCrIpTiVepEaFoWl
默认为 'titlecase'
。
致谢
所有荣誉都属于 Bryan Lee 和他的 zoo-ids 包。我想有一个PHP版本来使用(用户名生成由PHP CMS处理),并将他的大多数现有代码转换为此格式。目前缺少一些原始功能,例如使用对象作为种子。