npub / gos
PHP 的 SNILS 验证和格式化类。
v0.9.11
2023-04-11 11:31 UTC
Requires
- php: ^8
Requires (Dev)
- doctrine/coding-standard: ^11.1
- doctrine/orm: ^2.14
- phpstan/extension-installer: ^1.2
- phpstan/phpstan: ^1.10
- phpstan/phpstan-strict-rules: ^1.5
- phpunit/phpunit: ^10
- psalm/plugin-phpunit: ^0.18
- symfony/error-handler: ^6.2
- twig/twig: ^2.4|^3.0
- vimeo/psalm: ^5.8
Suggests
- doctrine/orm: For using objects as Entity field type.
- twig/twig: For using filters.
README
该库包含一个用于存储、验证和格式化 СНИЛС 的 Snils 类,以及 Doctrine Type 和 Trait,可用于作为实体属性和扩展 Twig 使用。它可以与 Symfony 项目中的 Doctrine ORM 一起使用,也可以独立使用。
安装
composer require npub/gos
将 Doctrine 类型连接到 Symfony
# config/packages/doctrine.yaml doctrine: dbal: types: snils: Npub\Gos\Doctrine\Type\SnilsType snils_canonical: Npub\Gos\Doctrine\Type\SnilsCanonicalType
在不使用 Symfony 的情况下连接 Doctrine 类型
<?php use Doctrine\DBAL\Types\Type; use Npub\Gos\Doctrine\Type\SnilsCanonicalType; use Npub\Gos\Doctrine\Type\SnilsType; Type::addType('snils', SnilsType::class); Type::addType('snils_canonical', SnilsCanonicalType::class);
在实体中使用 Snils 字段类型
# Entity/Person.php <?php use Doctrine\ORM\Mapping as ORM; use Npub\Gos\Doctrine\Trait\Snilsable; /** * @ORM\Entity */ class Person { use Snilsable; … }
使用 Snils 对象
<?php use Npub\Gos\Snils; // Валидация строки СНИЛСв echo Snils::validate('123-456-789 64'); // 123456789 echo Snils::validate(12345678964, Snils::FORMAT_CANONICAL); // 123456789 var_dump(Snils::validate('123-456-789 11')); // bool(false) // Форматирование СНИЛСа из строки echo Snils::stringFormat('12345678964'); // 123-456-789 64 echo Snils::stringFormat('123-456-789 64', Snils::FORMAT_CANONICAL); // 12345678964 // Создание объекта сущности СНИЛСа из его ID (7–9 цифр) $snils = new Snils(123456789); var_dump($snils->isValid()); // bool(true) echo $snils->getCanonical(); // 12345678964 echo $snils->getID(); // 123456789 echo $snils->getChecksum(); // 64 echo $snils->format(Snils::FORMAT_SPACE); // 123-456-789 64 echo $snils->format(Snils::FORMAT_HYPHEN); // 123-456-789-64 echo $snils; // 123-456-789 64 // Создание объекта сущности СНИЛСа из строки /** @var Snils|false $snils */ $snils = Snils::createFromFormat('123-456-789 64'); print_r($snils); // Outputs additional info: // // Npub\Gos\Snils Object // ( // [_id] => 123456789 // [_is_valid] => true // [_checksum] => 64 // [_canonical] => 12345678964 // [__toString] => 123-456-789 64 // )