devsergeev/inn-validator

该包最新版本(2.0.3)没有可用的许可信息。

INN验证器

2.0.3 2023-10-08 10:13 UTC

This package is auto-updated.

Last update: 2024-09-08 12:32:09 UTC


README

描述

验证个体或法人INN(纳税人识别号)是否有效(12位或10位数字)。检查INN是否符合以下条件(参见维基百科

  • 由10或12个字符组成
  • 仅由数字组成
  • 具有正确的校验和

使用Composer安装

composer require devsergeev/inn-validator

使用示例

use \devsergeev\validators\InnValidator;

try {
    InnValidator::check($inn);
} catch (InvalidArgumentException $e) {
    echo $e->getMessage();
    echo $e->getCode();
}

方法InnValidator::check(string $inn)如果字符串$inn是有效的INN,则返回true。否则将抛出带有相应错误信息的异常。

尽管验证器有内置的INN错误信息,但您可以设置自己的信息

use \devsergeev\validators\InnValidator;

InnValidator::$messageInvalidLenght   = 'Ваше сообщение о недопустимой длине ИНН';
InnValidator::$messageOnlyDigits      = 'Ваше сообщение о том, что ИНН должен состоять только из цифр';
InnValidator::$messageInvalidChecksum = 'Ваше сообщение о неправильной контрольной сумме';

try {
    InnValidator::check($inn);
} catch (InvalidArgumentException $e) {
    echo $e->getMessage();
}

使用异常代码的示例和自定义消息的替代实现

use \devsergeev\validators\InnValidator;

try {
    InnValidator::check($inn);
} catch (InvalidArgumentException $e) {
    switch ($e->getCode()) {
        case InnValidator::CODE_INVALID_LENGHT:
            $message = 'Ваше сообщение о недопустимой длине ИНН';
            break;
        case InnValidator::CODE_NOT_ONLY_DIGITS:
            $message = 'Ваше сообщение о том, что ИНН должен состоять только из цифр';
            break;
        case InnValidator::CODE_INVALID_CHECKSUM:
            $message = 'Ваше сообщение о неправильной контрольной сумме';
            break;
    }
    echo $message;
}

Docker-compose开发

创建docker-compose

docker-compose -f ./docker/docker-compose.yml --env-file ./docker/.env up

启动bash

docker-compose -f ./docker/docker-compose.yml --env-file ./docker/.env run --rm php-cli bash

安装依赖项

composer install

运行测试

vendor/bin/phpunit