soundways / iso7064
为GRid代码创建的ISO 7064校验字符计算器
Requires
- php: ^7.1
Requires (Dev)
- phpunit/phpunit: ^7.0
Suggests
- ext-mbstring: mbstring is required, but can be substituted with symfony/polyfill-mbstring when ext-mbstring is unavailable
This package is auto-updated.
Last update: 2024-09-25 08:59:30 UTC
README
Soundways Iso7064提供ISO 7064:1983 Mod 37, 36的实现,主要用于计算GRid标准2.1的校验字符。
这需要PHP 7.1
安装
使用Composer,在项目根目录中要求此包。
$ composer require 'soundways/iso7064'
依赖关系
ext-mbstring
是必需的,用于mb_strlen
。如果由于任何原因无法使用ext-mbstring
,则可以使用symfony\polyfill-mbstring
来代替。
Iso7064使用类型提示,需要PHP版本^7.1
快速入门
使用GRid对象计算校验字符
use Soundways\Iso7064\GRid; $grid = new GRid('A1-2425G-ABC1234002'); $grid->encode(); // returns 'A1-2425G-ABC1234002-M' $grid->getDelimitedGRid();
参考
命名空间包含用于ISO标准中通用编码的Mod3736
类,以及强制执行GRid特定要求并包含一些辅助函数的GRid
类。
Mod
Mod
是一个抽象类,提供使用ISO 7064对校验字符进行编码和验证的通用功能,无论模数如何。代码将被移除非字母数字字符,并存储在对象的$code
属性中。
function encode(): string
编码是一个辅助函数,用于生成和附加对象的$code
属性的校验字符。当调用时,$code
属性将更新为其校验字符。结果相当于
$mod = new Mod3736(); $code = 'ABCDEFG'; $code .= $mod->generateCheckChar($code);
-
function generateCheckChar(?string $code): string
为给定的代码生成并返回校验字符。如果没有传递代码作为参数,则该函数将使用对象的$code
属性。
要为特定模数创建一个类,必须使用该模数的算法重写此函数。 -
function validateCheckChar(): bool
从对象的$code
属性中获取校验字符,并返回它是否与字符串计算的校验字符匹配。 -
function setCode(string $code): void
$code
属性的设置器。自动删除非字母数字字符。 -
function getCode(): string
$code
属性的获取器。 -
function format(array $lengths, string $delimiter): string
返回用给定长度的序列分隔的$code
属性。例如,如果当前代码是'ABCDEFGR'
,并且您传递长度数组[1, 3, 3, 1]
以及分隔符'-'
,则该函数将返回'A-BCD-EFG-R'
。 -
function getCheckChar(): string
返回对象的$code
属性的最后字符的辅助函数。
Mod3736
Mod3736
类扩展了Mod
,并提供了Mod 37, 36的功能。
function generateCheckChar(?string $code): string
按照Mod 37, 36生成校验字符
GRid
GRid
类扩展了Mod3736
,提供类似的功能,但同时也强制执行GRid标准,并包括一些额外的格式化辅助函数。如果构造函数中传递了代码,则代码将像在Mod3736
构造函数中一样进行检查和解析。
从Mod3736直接继承的函数
getCode()
getCheckChar()
类似于Mod3736但强制执行GRid标准的函数
这包括不对已编码的GRid进行编码,以及不验证未编码的GRid。
encode()
generateCheckChar()
validateCheckChar()
setCode()
GRid函数参考
-
function format(): string
返回对象$code
属性,按照 GRid 标准 2.1 格式,以 XX-XXXXX-XXXXXXXXXX-X 形式分隔。如果在$code
属性未编码时调用此函数,将抛出 GRidException。
由于此函数继承自Mod3736::format()
,可以传递$lengths
和$delimiter
参数;然而,为了强制执行 GRid 格式,这些参数将被忽略。无需向此函数传递任何参数。 -
静态函数 checkGRid(string $code): bool
静态辅助函数,用于快速验证 GRid 代码,无需手动创建 GRid 对象实例,如下所示
// returns true GRid::checkGRid('A1-2425G-ABC1234002-M'); // returns false GRid::checkGRid('A1-2425G-ABC1234002-0');