tacman / nameapi-client-php
NameAPI Web服务的PHP客户端
Requires
- php: >=8.1
- ext-curl: *
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^9
README
在 http://www.nameapi.org/ 的NameAPI Web服务的PHP客户端
您只需提供自己的API密钥即可发送请求,您可以从nameapi.org获取。
这个库简单地是从 https://github.com/mobilelocker/nameapi-client-php 分支出来的,后者又是原始库的分支,但原始库不支持PSR-4命名空间,这是composer 2所要求的。
库设置
composer require tacman/nameapi-client-php
功能测试
演示服务如何工作并确保它们正常工作的功能测试在 https://github.com/optimaize/nameapi-client-php-functionaltests 中,您可以查看代码,甚至可以使用您的API密钥和PHPUnit运行这些测试。
设置代码
首先,您需要包含一个单独的文件,即指向nameapi服务工厂的文件。
require_once('your/path/to/Org/NameApi/Client/Services/ServiceFactory.php');
然后,您需要一个Context,它解释了您的工作环境,类似于以下内容:
use Org\NameApi\Ontology\input\Context\Context; use Org\NameApi\Ontology\input\Context\Priority; $context = Context::builder() ->place('US') ->priority(Priority::REALTIME) ->build();
然后,您已经可以创建服务工厂,它为您提供访问所有nameapi服务的方法。
$serviceFactory = new ServiceFactory('your-api-key', $context);
发送ping
此代码向nameapi发送简单的ping以测试连接。
$ping = $serviceFactory->systemServices()->ping(); $pong = $ping->ping();
如果响应是'pong',则一切正常,您可以继续进行实际操作。
输入/输出
所有输入对象都带有构建器或良好的文档化的setter。服务返回的结果对象都有完整的文档化的getter。许多输入参数是可选的,这意味着您可以简单开始,然后根据需要添加更多。
在幕后,此服务API使用REST。但幸运的是,您无需担心任何接口细节,您只需使用提供的类即可。
人员输入对象
大多数服务接受一个'Person'作为输入。此人员包含一个名称,以及可选的更多数据,例如性别、出生日期等。名称可以是单个“全名”字符串,也可以由多个字段组成,例如给定名称、中间名称、姓氏。这个标准化的API使得以一致的方式使用不同的服务变得简单,并且在接受数据时非常方便。
创建简单人员看起来像这样
use Org\NameApi\Ontology\input\Entities\Person\NaturalInputPerson; use Org\NameApi\Ontology\input\Entities\Person\Name\InputPersonName; $inputPerson = NaturalInputPerson::builder() ->name(InputPersonName::westernBuilder() ->fullname( "John F. Kennedy" ) ->build()) ->build();
名称解析器
名称解析是将全名拆分成其组成部分的过程。
使用之前创建的$inputPerson
$personNameParser = $this->makeServiceFactory()->parserServices()->personNameParser(); $parseResult = $personNameParser->parse($inputPerson); var_dump($parseResult);
名称性别化器
名称性别化是基于个人的名称来识别性别的过程。
使用之前创建的$inputPerson
$personGenderizer = $serviceFactory->genderizerServices()->personGenderizer(); $personGenderResult = $personGenderizer->assess($inputPerson); echo $personGenderResult->getGender()->toString(); //will print 'MALE'
名称匹配器
名称匹配器比较名称和名称对,以发现是否可能是同一个人。
此服务接受2个人作为输入
$personMatcher = $serviceFactory->matcherServices()->personMatcher(); $inputPerson1 = NaturalInputPerson::builder() ->name(InputPersonName::westernBuilder() ->fullname( "John F. Kennedy" ) ->build()) ->build(); $inputPerson2 = NaturalInputPerson::builder() ->name(InputPersonName::westernBuilder() ->fullname( "Jack Kennedy" ) ->build()) ->build(); $personMatcherResult = $personMatcher->match($inputPerson1, $inputPerson2); echo $personMatcherResult->getPersonMatchType()->toString(); //will print 'MATCHING'
名称格式化器
名称格式化器以所需的格式显示个人姓名。这包括顺序以及大小写。
$personNameFormatter = $serviceFactory->formatterServices()->personNameFormatter(); $inputPerson = NaturalInputPerson::builder() ->name(InputPersonName::westernBuilder() ->fullname( "john kennedy" ) ->build()) ->build(); $formatterResult = $personNameFormatter->format($inputPerson, new FormatterProperties()); echo $formatterResult->getFormatted(); //will print 'John Kennedy'
电子邮件名称解析器
电子邮件名称解析器从电子邮件地址中提取名称。
$emailNameParser = $serviceFactory->emailServices()->emailNameParser(); $result = $emailNameParser->parse("john.doe@example.com"); echo $result;
一次性电子邮件地址检测器
DEA-Detector将电子邮件地址与已知的“垃圾域名”列表(如mailinator.com)进行比对。
$deaDetector = $serviceFactory->emailServices()->disposableEmailAddressDetector(); $result = $deaDetector->isDisposable("abcdefgh@10minutemail.com"); echo $result->getDisposable()->toString()); //will print 'YES'
风险检测器
Risk-Detector检查人员输入中的所有数据,包括姓名、地址、出生日期、电子邮件地址和电话号码,以检查是否存在虚假和可疑数据。
$riskDetector = $serviceFactory->riskServices()->personRiskDetector(); $riskResult = $riskDetector->detect($inputPerson); var_dump($riskResult);