macmotp/codegen

生成易于阅读的代码

v0.2.0 2023-07-08 07:14 UTC

README

Latest Version on Packagist Total Downloads codecov

生成易于阅读的代码

适用于参考代码、收据代码、代码引用。

要求

  • PHP >= 8.1

对于 PHP 7.4,请使用分支 v0.1.4

对于 PHP 8.0,请使用分支 v0.1.5

安装

通过 composer 安装包

composer require macmotp/codegen

使用方法

从任何字符串创建语义化和清洗过的引用代码

use Macmotp\Codegen;

$generator = new Codegen();

echo $generator->generate('Bob McLovin');

// (string) 'BOMCLO'

echo $generator->generate('Company Name');

// (string) 'COMPNA'

创建代码集合

use Macmotp\Codegen;

$generator = new Codegen();

for ($i = 0; $i < 4; $i++) {
   echo $generator->generate('Bob McLovin');
}
// (string) 'BOMCLO'
// (string) 'BOMCLV'
// (string) 'BOMCLI'
// (string) 'BOMCLN'

// Or you can simply retrieve the codes directly within a collection:
echo $generator->collection('Bob McLovin', 4);

// (array) [
//    "BOMCLO",
//    "BOMCLV",
//    "BOMCLI",
//    "BOMCLN",
// ];

当源字母不足导致可能性较低时,它将自动应用随机字母。 请注意,此包不保证结果唯一性。

配置

设置配置参数

use Macmotp\Codegen;

$generator = new Codegen();

echo $generator->setCodeLength(10)
        ->prepend('PR')
        ->append('AP')
        ->generate('Company Name');
// (string) 'PRCOMPNAAP'

配置方法列表

  • setCodeLength(int $length): 生成代码的总长度;
  • prepend(string $prepend): 前置字符串;
  • append(string $append): 后置字符串;
  • setMaxAttempts(int $maxAttempts): 设置最大尝试次数;
  • sanitizeLevel(int $sanitizeLevel): 请见下文;

清洗级别

有时,易读代码的目的是在阅读/拼写时避免混淆。因此,可以应用一些过滤器来删除类似图形字母/数字。

选择3种不同级别的清洗

  • 级别 1. 低/默认:将过滤出任何不是字母或数字的字符
  • 级别 2. 中等:将过滤出 (O - 0 - Q - I - 1) 字符
  • 级别 3. 高:将过滤出 (2 - Z - 4 - A - 5 - S - 8 - B - U - V - Y) 字符

级别是包含的,例如,最高级别也将应用低级别和中级过滤器

use Macmotp\Codegen;
use Macmotp\Codegen\Config\Config;

$generator = new Codegen();

echo $generator->sanitizeLevel(Config::SANITIZE_LEVEL_MEDIUM)
        ->generate('Bob McLovin');
// (string) 'BBMCLV'

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全漏洞

请参阅 我们的安全策略,了解如何报告安全漏洞。

鸣谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件