imliam / php-nhs-number
用于验证、格式化和生成NHS号码的实用类。
v1.1.0
2019-07-23 18:54 UTC
Requires
- php: ^7.1
Requires (Dev)
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-09-13 01:37:09 UTC
README
用于验证、格式化和生成NHS号码的实用类。
🤔 常见问题解答
什么是NHS号码?
NHS号码是每个在英国国民医疗服务体系(NHS)注册的个人的唯一标识符。
如何验证NHS号码?
并非每个号码都是有效的NHS号码,它们必须符合一个简单的算法才能被认为是有效的。在运行算法之前,有一些关于NHS号码需要注意的事项
- NHS号码必须是数字
- NHS号码必须是10位数字
- NHS号码可以以0开头,因此应将其处理为字符串,而不是整数
- NHS号码的最后一位数字用作算法的“校验位”
使用“校验位”验证NHS号码的算法如下
- 将每个前九位数字乘以定义的权重,如下所示
- 计算所有9次乘法的总和
- 将这个总和除以11并得到余数
- 从余数中减去11以得到总和
- 如果总和是11,则标识符,否则标识符是总和
- 如果标识符是10,则NHS号码是错误的
- 如果标识符与校验位相同,则NHS号码是正确的
💾 安装
您可以使用以下命令使用Composer安装此软件包
composer require imliam/php-nhs-number:^1.1
📝 使用
通过传递NHS号码,您可以创建一个NhsNumber
对象。
$nhsNumber = new \ImLiam\NhsNumber\NhsNumber('9077844449');
NHS建议在向人类展示NHS号码时,应使用3-3-4格式进行间隔,这有助于更容易阅读。为此,请调用->format()
方法或将对象转换为字符串。
echo $nhsNumber->format(); // '907 784 4449' echo (string) $nhsNumber; // '907 784 4449'
要获取当前号码是否有效的布尔表示,请调用对象上的->isValid()
方法。
$nhsNumber->isValid(); // true
如果您需要更多关于为什么某个NHS号码可能无效的信息,可以直接调用->validate()
方法。这将抛出一个InvalidNhsNumberException
异常,其消息将解释为什么该号码无效。
try { $nhsNumber = new \ImLiam\NhsNumber\NhsNumber('9077844446'); $nhsNumber->validate(); } catch (\ImLiam\NhsNumber\InvalidNhsNumberException $e) { echo $e->getMessage(); // "The NHS number's check digit does not match." }
为了测试目的,您可以调用静态方法::getRandomNumber()
或::getRandomNumbers($count)
分别来生成单个或多个随机有效的NHS号码。
echo \ImLiam\NhsNumber\NhsNumber::getRandomNumber(); // '9278462608' echo \ImLiam\NhsNumber\NhsNumber::getRandomNumbers(5); // ['7448556886', '0372104223', '8416367035']
✅ 测试
composer test
🔖 变更日志
请参阅变更日志文件以获取有关最近更改的更多信息。
⬆️ 升级
请参阅升级文件以获取有关从先前版本升级的详细信息。
🎉 贡献
🔒 安全
如果您发现任何安全相关的问题,请通过电子邮件liam@liamhammett.com联系,而不是使用问题跟踪器。
👷 致谢
- 李iam Hammett
- 彼得·费舍尔(原作者)
- 所有贡献者
♻️ 许可证
麻省理工学院许可证(MIT)。更多信息请参阅许可证文件。