amestsantim/voucherator

一个通用的PHP包,可以生成各种随机的券/优惠券代码。兼容Laravel。

2.2.0 2021-11-04 13:04 UTC

This package is auto-updated.

Last update: 2024-09-04 19:33:26 UTC


README

Total Downloads License

这是您为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 文件。

致谢