kkszymanowski / pesel
PESEL号码正确性检查
4.0.0
2021-10-08 12:30 UTC
Requires
- php: >=7.3.0
- ext-calendar: *
Requires (Dev)
- php-coveralls/php-coveralls: ^2.4
- phpunit/phpunit: ^9.3.8
This package is auto-updated.
Last update: 2024-09-10 15:51:33 UTC
README
PESEL号码轻松验证包。
安装
composer require kkszymanowski/pesel
升级指南
2.* -> 3.*
版本3与版本2向后兼容,但需要PHP >=7.3。除了提高PHP版本外,无需进行任何更改。
建议将捕获的异常InvalidArgumentException
更改为对应具体验证错误的异常
Pesel\Exceptions\InvalidLengthException
- 长度错误Pesel\Exceptions\InvalidCharactersException
- 包含非数字字符Pesel\Exceptions\InvalidChecksumException
- 校验和错误
或者简单地使用Pesel\Exceptions\PeselValidationException
来捕获所有验证错误。
3.* -> 4.*
版本4更改了PESEL号码的验证,以正确识别像00000000000
和44444444444
这样的错误号码。因此,版本4在这些边缘情况下与版本3不兼容,但在大多数情况下不应有问题。
从版本4开始,如果PESEL号码中的出生日期不正确,将抛出新的异常Pesel\Exceptions\InvalidBirthDateException
。
使用
创建对象
$pesel = new Pesel($number);
或
$pesel = Pesel::create($number);
上述方法是等价的。
在创建对象时检查PESEL号码的正确性。
- 应该有11个字符。
- 应该只包含数字。
- 校验和应该是正确的。
- 应该包含正确的出生日期
- 年 >= 1800且 < 2300。
- 月 >= 1且 <= 12。
- 日 >= 1且不超过该月和该年的天数。
如果至少有一个条件未满足,将抛出相应的异常
Pesel\Exceptions\InvalidLengthException
- 长度错误Pesel\Exceptions\InvalidCharactersException
- 包含非数字字符Pesel\Exceptions\InvalidChecksumException
- 校验和错误Pesel\Exceptions\InvalidChecksumException
- 日期错误
try { Pesel::create($number); echo('Numer PESEL jest poprawny'); } catch(Pesel\Exceptions\InvalidLengthException $e) { echo('Numer PESEL ma nieprawidłową długość'); } catch(Pesel\Exceptions\InvalidCharactersException $e) { echo('Numer PESEL zawiera nieprawidłowe znaki'); } catch(Pesel\Exceptions\InvalidChecksumException $e) { echo('Numer PESEL zawiera błędną sumę kontrolną'); } catch(Pesel\Exceptions\InvalidBirthDateException $e) { echo('Numer PESEL zawiera nieprawdiłową datę urodzenia'); }
所有上述异常都继承自Pesel\Exceptions\PeselValidationException
,因此如果不需要区分具体的验证错误,可以使用单个catch
子句。
try { Pesel::create($number); echo('Numer PESEL jest poprawny'); } catch(\Pesel\Exceptions\PeselValidationException $e) { echo('Numer PESEL jest błędny'); }
获取PESEL号码的内容
$pesel = new Pesel($number); $pesel->getNumber(); // Zwraca string $pesel->getBirthDate(); // Zwraca DateTime $pesel->getGender(); // Zwraca Pesel::GENDER_MALE lub Pesel::GENDER_FEMALE
检查正确性
Pesel::isValid($pesel); // Zwraca bool, nie rzuca wyjątku
检查出生日期
$birthDate
参数是PHP内置DateTime类的实例
PeselValidator::hasBirthDate(Pesel::create($pesel), $birthDate);
检查性别
PeselValidator::hasGender(Pesel::create($pesel), Pesel::GENDER_MALE); PeselValidator::hasGender(Pesel::create($pesel), Pesel::GENDER_FEMALE);