soundways/iso7064

为GRid代码创建的ISO 7064校验字符计算器

v1.1.0 2019-04-02 15:24 UTC

This package is auto-updated.

Last update: 2024-09-25 08:59:30 UTC


README

Build Status PHP from Travis config codecov

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');

补充说明

关于 André Catita 对 ISO 7064 Mod 11, 2 的实现.