reducktion/socrates

一个用于验证和从国家身份证号码中提取公民信息的包。

v2.0.0 2022-11-21 21:03 UTC

This package is auto-updated.

Last update: 2024-09-23 16:31:50 UTC


README

Socrates logo

Usage example

Badge Total Downloads Latest Version License StyleCI Contributors

简介

我是一个世界公民,我的国籍是善意。

Socrates是一个PHP包,允许您验证和从国家身份证号码中检索个人信息。支持大多数欧洲国家,以及一些北美和南美国家,目标是支持世界上尽可能多的国家。

一些国家还使用个人信息的编码,如性别或出生地。此包允许您以一致的方式提取这些信息。

此包可用于许多事情,例如验证用户ID用于与金融相关的应用程序或验证用户的年龄而无需明确询问。我们建议您在存储任何信息之前,审查您所在国家的数据处理和保护法律。

此包的其他语言版本正在开发中。请向下查看目前可用版本。

PHP版本

PHP 8.1是最低要求版本。如果您使用的是较旧版本,则应拉取此包的1.3.0版本。我们强烈建议您升级!

安装

composer require reducktion/socrates

用法

Socrates提供两种方法:validateIdgetCitizenDataFromId。两个方法都接收一个ID和一个国家代码,分别作为枚举的参数,枚举值遵循ISO 3166-2格式。只需实例化类并调用您希望的方法

use Reducktion\Socrates\Socrates;
use Reducktion\Socrates\Constants\Country;

$socrates = new Socrates();
$socrates->validateId('14349483 0 ZV3', Country::Portugal);

validateId

此方法将返回true或false。如果ID的字符长度不正确,将抛出InvalidLengthException

if ($socrates->validateId('719102091', Country::Netherlands)) {
    echo 'Valid ID.';
} else {
    echo 'Invalid ID.';
}

getCitizenDataFromId

此方法将返回一个Citizen实例。
如果ID无效,将抛出InvalidIdException
如果国家不支持数据提取,将抛出UnsupportedOperationException

$citizen = $socrates->getCitizenDataFromId('3860123012', Country::Estonia);

Citizen类以一致格式存储所有国家提取的公民数据。
它公开了getGender()getDateOfBirth()getAge()getPlaceOfBirth()方法。

getGender将返回一个Gender枚举实例。
getPlaceOfBirth将返回一个城市或地区的名称,作为string
getAge返回公民的年龄,作为int
getDateOfBirth返回一个DateTime实例。

使用上面的示例,爱沙尼亚只在其ID中编码公民的出生日期和性别。因此,上述方法将返回

echo $citizen->getGender(); // 'Gender::Male'
echo $citizen->getDateOfBirth(); // DateTime instance with the date '1986-01-23'
echo $citizen->getAge(); // (The current age as a number)
echo $citizen->getPlaceOfBirth(); // null - Estonia does not encode place of birth on its ID numbers

支持和不支持的国家

在这里您可以查看支持的国家完整列表以及它们是否支持数据提取[链接]

目前有四个欧洲国家不支持:奥地利 🇦🇹、白俄罗斯 🇧🇾、塞浦路斯 🇨🇾和卢森堡 🇱🇺。美洲也有一些国家不支持。这是因为我们无法找到可靠的算法来源,如果有的话。我们很乐意帮助这些国家得到支持。

测试

composer test

端口

本包也支持以下语言

Rust
Java

贡献

您在算法中发现了任何问题吗?您知道如何实现我们遗漏的国家吗?您认为代码库应该进行哪些改进?任何帮助都备受欢迎!请查看我们的贡献指南

行为准则

我们的行为准则基于Ruby的。请查看我们的行为准则

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。

鸣谢

Socrates是由Alexandre OlivalJoão Cruz用💖制作的。我们是Reducktion。我们希望通过编译、研究、逆向工程和对ID验证算法的痛苦挣扎(许多算法非常晦涩难懂且难以找到)之后,使某个人的生活变得更轻松。

特别感谢

感谢以下这些人,他们帮助我们用现实生活中的ID进行测试或指导我们找到他们国家的算法

  • Alexandra from 🇷🇴
  • Berilay from 🇹🇷
  • Christian from 🇨🇭
  • Domynikas from 🇱🇹
  • Jeppe from 🇩🇰
  • Jeremy from 🇫🇷
  • Lisa from 🇬🇷
  • Miguel from 🇪🇸

以及Nair from 🇵🇹为我们提供包名。

贡献者 ✨

感谢这些美好的人们(表情符号键

此项目遵循all-contributors规范。欢迎所有类型的贡献!