vonlab/kz-iin

一个用于生成和验证哈萨克斯坦个人身份证号码(IIN)的库。

v1.0.5 2024-06-09 16:36 UTC

This package is auto-updated.

Last update: 2024-09-09 17:13:09 UTC


README

Latest Stable Version License PHP Version Require Coverage Status

此库提供了验证、解析和生成哈萨克斯坦个人身份证号码(IIN)的工具。

关于哈萨克斯坦IIN

在哈萨克斯坦,个人身份证号码(IIN)是对个人分配的唯一标识符。IIN由12位数字组成,其中每个数字代表个人特定的信息,例如出生日期、性别以及同一天出生的个人唯一标识符。有关IIN结构和目的的更详细信息,请参阅此处

功能

  • 验证哈萨克斯坦IIN
  • 解析哈萨克斯坦IIN以提取有用信息
  • 生成有效的哈萨克斯坦IIN
  • 处理各种验证错误的异常处理

安装

您可以通过composer安装此包

composer require vonlab/kz-iin

用法

验证IIN

要验证IIN,请使用IinValidator类。

带有异常处理

<?php

use VonLab\KzIin\IinParser;
use VonLab\KzIin\IinValidator;

$validator = new IinValidator(new IinParser());

try {
    if ($validator->validate('your-iin-here')) {
        echo "IIN is valid.";
    }
} catch (\Exception $e) {
    echo "Validation failed: " . $e->getMessage();
}

不带异常处理

use VonLab\KzIin\IinParser;
use VonLab\KzIin\IinValidator;

$validator = new IinValidator(new IinParser());

if ($validator->isValid('your-iin-here')) {
    echo "IIN is valid.";
} else {
    echo "Validation failed: " . $validator->getError();
}

IIN生成

要生成IIN,请使用IinGenerator类。

<?php

use VonLab\KzIin\IinGenerator;
use VonLab\KzIin\Enums\GenderEnum;
use VonLab\KzIin\Data\BirthDate;

// Generate an IIN with random birthdate and gender
$generator = new IinGenerator();
$iin = $generator->generate();
echo "Generated IIN: $iin";

// Generate an IIN with specific birthdate and gender
$birthDate = new BirthDate(1990, 1, 1);
$gender = GenderEnum::Male;
$iin = $generator->generate($birthDate, $gender);
echo "Generated IIN: $iin";

IIN解析

要解析IIN,请使用IinParser类。

<?php

use VonLab\KzIin\IinParser;
use VonLab\KzIin\Utils\DateConverter;
use VonLab\KzIin\Exceptions\InvalidIinFormatException;

$parser = new IinParser();

try {
    $iinData = $parser->parse('your-iin-here');
    
    echo "Birth Date: " . DateConverter::toDateString($iinData->birthDate);
    echo "Year of birth: " . $iinData->birthDate->year;
    echo "Month of birth: " . $iinData->birthDate->month;
    echo "Day of birth: " . $iinData->birthDate->day;
    echo "Gender: " . $iinData->gender->value;
    echo "Century Gender Digit: " . $iinData->centuryGenderDigit;
    echo "Registration Number: " . $iinData->registrationNumber;
    echo "Control Digit: " . $iinData->controlDigit;
} catch (InvalidIinFormatException $e) {
    echo "Invalid IIN format: " . $e->getMessage();
}

附加信息

异常类

该库提供了特定异常类来处理各种验证错误

  • InvalidIinLengthException
  • InvalidIinCharacterException
  • InvalidBirthDateException
  • InvalidCenturyGenderDigitException
  • InvalidControlDigitException
  • InvalidIinFormatException

实用类

该库包括用于内部计算和日期处理的实用类

  • IinHelper:包含校验和计算和世纪/性别数字提取的方法。
  • DateConverter:用于日期格式转换的实用类。

Docker支持

包含用于设置开发环境的最小docker-compose.yml

测试

该库包括一套全面的单元测试。要运行测试,请使用以下命令

composer test

变更日志

有关最近更改的更多信息,请参阅变更日志

支持

如果您遇到任何问题或有疑问,请随时在GitHub上提交问题。

许可

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