amestsantim / voucherator
一个通用的PHP包,可以生成各种随机的券/优惠券代码。兼容Laravel。
Requires
- php: ^7.3|^8.0
- illuminate/collections: 8.*
README
这是您为PHP所需的所有唯一的券(字母数字代码)生成器。
Voucherator具有流畅的Generator类,可以生成各种类型的随机字母数字代码。该包还包括一个Transformer类,您可以使用它来对生成的券应用一些转换。您可以使用它来生成密码、通行证、密钥、券、优惠券、票据、令牌等。
先决条件
此包使用PHP 7的random_int()
函数,该函数生成适合在需要无偏结果的场景中使用的加密随机整数,例如在扑克牌游戏中洗牌。
此函数使用的随机数来源如下,如果您的机器不提供其中之一,则无法使用此包。
- 在Windows上,始终会使用» CryptGenRandom()。从PHP 7.2.0开始,将始终使用» CNG-API。
- 在Linux上,如果可用,将使用» getrandom(2)系统调用。
- 在其他平台上,将使用/dev/urandom。
- 如果上述所有来源都不可用,则将抛出Exception异常。(由本包捕获并抑制)
安装
通过Composer
此包可以使用Composer轻松安装 - 只需在命令行中要求amestsantim/voucherator
包即可。
composer require amestsantim/voucherator
或者,您可以手动将voucherator包添加到您的composer.json
文件中,然后从命令行运行composer install
,如下所示
{
"require": {
"amestsantim/voucherator": "~2.1"
}
}
composer install
您可以在PHP代码中使用它如下
<?php require __DIR__ . '/vendor/autoload.php'; use Amestsantim\Voucherator\VoucherGenerator; $v = new VoucherGenerator(); echo "Your coupon code is " . $v->letters()->length(12)->lowerCase()->generate()[0]; // Your coupon code is pxEJvcvRjwNg
如果您在Laravel中使用它,可以从AmestSantim\Voucherator\VoucherGenerator
实例化一个对象,并从AmestSantim\Voucherator\VoucherTransformer
类静态访问方法,如果需要在生成的券上应用转换。
用法
$v = AmestSantim\Voucherator\VoucherGenerator(); $v->generate(10); // ["6ae4OgTp", ...] $v->letters()->generate(5); // ["sVnkujCq", ...] $v->numerals()->length(16)->generate(); // ["1734785015950957", ...] $v->letters()->upperCase()->generate(200); // ["JTMAZNIZDDSUGVHC", ...] $v->numerals()->exclude('018')->generate(3); // ["4454525224222425", ...] $vouchers = $v->augment('#*')->generate(3); VoucherTransformer::addPrefix($vouchers, 'ET'); // ["ET69376##4492*2736", ...] $vouchers = $v->length(14)->generate(3); VoucherTransformer::addSeparator(VoucherTransformer::addPrefix($voucher, 'AA'), 4, '-'); // ["AA4Z-c3pP-APDU-E4u2", ...] $v->length(6)->numerals(); $v->generate(100) // ["939374", ...]
文档
该包组织得非常简单。它只包含两个类
- VoucherGenerator
- VoucherTransformer
VoucherGenerator
VoucherGenerator
类的函数可以语义上分为两类
变换器
这些是会改变券/代码生成所用字符集(charSet)的函数。默认为小写字母、大写字母和数字。请注意,您应用这些函数的顺序将导致不同的结果。
-
letters()
调用此函数将字符集设置为小写(a - z)和大写(A - Z)字母。 -
numerals()
这将字符集设置为数字(0123456789)。 -
upperCase()
这将将字符集中的所有字符都改为大写(A - Z)。如果设置之前字符集中包含大小写字母,则设置将合并(删除冗余)。 -
lowerCase()
该操作将字符集中的所有字符转换为小写(a - z)。如果字符集在应用函数之前包含大小写字母,则该集将被合并(删除冗余)。 -
exclude(string $exclusionList)
此函数将从字符集中删除指定的字符($exclusionList)。如果指定的字符不在字符集中,则将忽略它们。示例:$v->exclude('0o1li')->generate()
-
augment(string $inclusionList)
此函数将向字符集中添加指定的字符($inclusionList)。如果指定的字符(其中一些)已经在字符集中,则不会再次添加它们。示例:$v->augment('#_*@?')->generate()
操作及相关
这些函数是操作函数,它们告诉对象根据(可能是之前已修改的)字符集实际生成代金券/代码。
-
generate(int $count)
此函数需要在流畅链的末尾调用。您不能在链的中间调用 generate()。它接受要生成的代金券数量,并返回生成的代金券数组(即使是单个代金券)。 -
length(int $voucherLength)
此函数用于设置代金券的长度(大小)。默认值(如果您不调用此函数)为 8。 -
charSet()
此函数以原样返回当前字符集。返回值是数组。它包括用于测试和调试的目的,在生产中不会有任何可想象的使用。
VoucherTransformer
VoucherTransformer
类的所有方法都是静态的,可以在不实例化对象的情况下使用。它们在生成代金券/代码后对代金券进行表面(展示性)的转换,例如重新格式化和装饰它们。所有函数都是静态的,接受并返回代金券数组。
-
capitalizeFirstCharacter(array $vouchers)
此函数将每个代金券/代码的第一个字符大写。示例:$myProperCaseVouchers = VoucherTransformer::capitalizeFirstCharacter($myVouchers)
-
addSeparator(array $vouchers, int $chunkSize, character $separator)
此函数将代金券的字符分组为大小为 $chunkSize 的块,并使用给定的字符($separator)将它们连接起来。 -
addPrefix(array $vouchers, string $prefix)
此函数将给定的字符串($prefix)作为前缀添加到所有生成的代金券/代码前面。
贡献
代码遵循 PSR-2 编码风格指南。它也考虑了可扩展性。如果您有任何有用的改进,请随时提交 pull request。
版本控制
我们使用 SemVer 进行版本控制。有关可用的版本,请参阅此存储库的 标签。
作者
- Nahom Tamerat
许可
本项目受 MIT 许可证的许可 - 有关详细信息,请参阅 LICENSE.md 文件。
致谢
- 本包受到了 keygen-php 的启发。