ilexn / hkid-check-digit
HKID digit check
Fund package maintenance!
iLexN
Installs: 747
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 1
Open Issues: 0
pkg:composer/ilexn/hkid-check-digit
Requires
- php: >=8.3
- ilexn/result-option: ^0.2.0
Requires (Dev)
- codedungeon/phpunit-result-printer: ^0.32.0
- ilexn/keep-a-change-log: ^2.0
- infection/infection: 0.31.9
- phpbench/phpbench: 1.4.2
- phpstan/phpstan: 2.1.31
- phpstan/phpstan-phpunit: 2.0.7
- phpstan/phpstan-strict-rules: 2.0.7
- phpunit/phpunit: 12.4.2
- rector/rector: 2.2.7
This package is auto-updated.
Last update: 2025-11-03 13:34:59 UTC
README
Used to validation the format and check digit calculation for HKID.
__ __ __ ___ __ _______ ______ __ __ _______ ______ __ ___
| | | | | |/ / | | | \ / || | | | | ____| / || |/ /
| |__| | | ' / | | | .--. | | ,----'| |__| | | |__ | ,----'| ' /
| __ | | < | | | | | | | | | __ | | __| | | | <
| | | | | . \ | | | '--' | | `----.| | | | | |____ | `----.| . \
|__| |__| |__|\__\ |__| |_______/ \______||__| |__| |_______| \______||__|\__\
| Tag | PHP |
|---|---|
| 1.x | |
| 2.x | php>=7.1 |
| 3.x | php>=7.4 |
| 4.x | php>=8.0 |
| 5.x | php>=8.1 |
| 6.x | php>=8.4 |
Installation
composer require ilexn/hkid-check-digit
Upgrade from 5.x to 6.x
The \Ilex\Validation\HkidValidation\Enum\Reason::PatternError changed to \Ilex\Validation\HkidValidation\Enum\Reason::PatternError
This has the incorrect spelling in the previous version.
Upgrade from 4.x to 5.x
The \Ilex\Validation\HkidValidation\Reason\ReasonInterface changed to Enum \Ilex\Validation\HkidValidation\Enum\Reason
//4.x switch ($hkid->getReason()){ case \Ilex\Validation\HkidValidation\Reason\ReasonInterface::OK: echo('correct'); echo($hkid->format()); break; case \Ilex\Validation\HkidValidation\Reason\ReasonInterface::PATTEN_ERROR: echo('Pattern not match'); break; case \Ilex\Validation\HkidValidation\Reason\ReasonInterface::DIGIT_ERROR: echo('Digit not match'); break; } //5.x switch ($hkid->getReason()){ case \Ilex\Validation\HkidValidation\Enum\Reason::Ok: echo('correct'); echo($hkid->format()); break; case \Ilex\Validation\HkidValidation\Enum\Reason::PatternError: echo('Pattern not match'); break; case \Ilex\Validation\HkidValidation\Enum\Reason::DigitError: echo('Digit not match'); break; }
Upgrade from 2.x to 3.x
All the checking now return \Ilex\Validation\HkidValidation\HkId object, not bool
<?php use Ilex\Validation\HkidValidation\Helper; require_once 'vendor/autoload.php'; $a = Helper::checkByString($s); //2.x: $a is bool //>=3.x $a->isValid(); //bool $a->PatternError(); //bool $a->isDigitError(); //bool echo($a->format()); // print the formated HKID. echo($a->getReason()); //also can get back each parts echo($a->getPart1()); echo($a->getPart2()); echo($a->getPart3());
Usage example
Quick helper - check by each part
<?php use Ilex\Validation\HkidValidation\Helper; require_once 'vendor/autoload.php'; //CA182361(1) $p1 = 'CA'; $p2 = '182361'; $p3 = '1'; $a = Helper::checkByParts($p1, $p2, $p3); if ($a->isValid()) { echo ('correct'); echo $a->format(); //CA182361(1) echo (string) $a; //CA182361(1) } else { echo ('wrong'); }
Quick helper - check by string
<?php use Ilex\Validation\HkidValidation\Enum\Reason;use Ilex\Validation\HkidValidation\Helper; require_once 'vendor/autoload.php'; $s = 'CA182361(1)'; $hkid = Helper::checkByString($s); switch ($hkid->getReason()){ case \Ilex\Validation\HkidValidation\Enum\Reason::Ok: echo('correct'); echo($hkid->format()); break; case \Ilex\Validation\HkidValidation\Enum\Reason::PatternError: echo('Pattern not match'); break; case \Ilex\Validation\HkidValidation\Enum\Reason::DigitError: echo('Digit not match'); break;
Normal
<?php use Ilex\Validation\HkidValidation\HkidDigitCheck; require_once 'vendor/autoload.php'; $p1 = 'CA'; $p2 = '182361'; $p3 = '1'; $s = 'CA182361(1)'; $c = new HkidDigitCheck(); $hkid = $c->checkParts($p1,$p2,$p3); if ($hkid->isValid()) { echo ('correct'); echo $hkid->format(); } else { echo ('wrong'); if ($hkid->PatternError()) { echo('Pattern not match'); } if ($hkid->isDigitError()) { echo('Digit not match'); } } $hkid = $c->checkString($s); if ($hkid->isValid()) { echo ('correct'); echo $hkid->format(); } else { echo ('wrong'); }