npub / gos
SNILS validation and formatting class for PHP.
Installs: 1 757
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^8
Requires (Dev)
- doctrine/coding-standard: ^11.1
- doctrine/orm: ^3.0
- phpstan/extension-installer: ^1.2
- phpstan/phpstan: ^1.10
- phpstan/phpstan-strict-rules: ^1.5
- phpunit/phpunit: ^10
- symfony/error-handler: ^6.2
- twig/twig: ^3.11.2
Suggests
- doctrine/orm: For using objects as Entity field type.
- twig/twig: For using filters.
README
Библиотека содержит класс Snils для хранения, проверки и форматирования СНИЛСа, а также Doctrine Type, Trait для использования в качестве свойств Entity и расширения 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
Подключение Doctrine типа без Symfony
<?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
# 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 // )