cpana/cnp

1.0.0-beta 2021-01-20 19:56 UTC

This package is not auto-updated.

Last update: 2024-09-13 15:09:19 UTC


README

PHP 库,用于验证和提取 CNP 信息。

安装

使用 Composer

composer require cpana/cnp

使用

在 src/Examples 文件夹中找到一些使用示例。

在实例化 CodNumericPersonal 类时,将包含 CNP 字符串的字符串作为参数传递。

如果不是有效的 CNP,将抛出一个实现 CPANA\CNP\Exception\CNPExceptionInterface 接口的异常。

use CPANA\CNP\CodNumericPersonal;
use CPANA\CNP\Exception\CNPExceptionInterface;

...
try {
    $cnpObj = new CodNumericPersonal($inputString);
} catch (CNPExceptionInterface $e) {
    // handle error
} 

如果需要更详细地处理不同的验证错误,请参考下面的示例

use CPANA\CNP\CodNumericPersonal;
use CPANA\CNP\Exception\GenericInvalidCNPException;
use CPANA\CNP\Exception\InvalidCNPLengthCNPException;
use CPANA\CNP\Exception\NonNumericValueCNPException;
use CPANA\CNP\Exception\CNPExceptionInterface;

...
try {
    $cnpObj = new CodNumericPersonal($inputString);
} catch (InvalidCNPLengthCNPException $e) {
    // Ex: Display message to user
    
} catch (NonNumericValueCNPException $e) {
    // Ex: Display message to user
    
} catch (GenericInvalidCNPException $e) {
    $code = $e->getCode();
    // take decision based on error code
    switch ($code) {
        case GenericInvalidCNPException::EXCEPTION_COUNTY:
            // take some action like  highlight wrong digits for county JJ
            echo 'Error code:'.$e->getCode().' '.$e->getMessage().PHP_EOL;
            break;
        case GenericInvalidCNPException::EXCEPTION_GENDER:
            // take some specific action ..
            break;
        case GenericInvalidCNPException::EXCEPTION_YEAR:
            // take some specific action ..
            break;
        case GenericInvalidCNPException::EXCEPTION_MONTH:
            // take some specific action ..
        case GenericInvalidCNPException::EXCEPTION_DAY:
            // take some specific action ..
            break;
    }
} catch (CNPExceptionInterface $e) {
    // do something
} catch (\Exception $e) {
    // do something
}

自动化测试

运行自动化测试

./vendor/bin/phpunit tests
PHPUnit 7.5.20 by Sebastian Bergmann and contributors.

.......                                                             7 / 7 (100%)

Time: 106 ms, Memory: 4.00 MB

OK (7 tests, 7 assertions)

代码质量

为了检查代码质量,可以使用以下命令

composer lint

详细使用的应用程序

  1. PHP CS Fixer - 检查编码标准的遵循情况(并自动修复偏差)
    composer cs-fix
    composer cs-test
    
  2. PHP CodeSniffer - 与 PHP CS Fixer 部分重复,其中包含一些有用的检查
    composer phpcs
    
  3. PHP Mess Detector - 分析代码质量,包括体积、质量等
    composer phpmd
    
  4. PHPStan - 静态分析,识别代码中的常见问题
    composer phpstan
    
  5. PHPUnit - 功能测试和单元测试
    composer test
    

许可证

此软件包根据 MIT 许可证许可。