Zrobiłem Numerik — bibliotekę do walidacji i parsowania polskich numerów identyfikacyjnych: PESEL, NIP, REGON, KRS, NRB, VAT-EU, IBAN, dowód osobisty i paszport. Dostępna dla PHP i TypeScript/JS, plus gotowe reguły walidacji do Laravela.
Zamiast zwracać gołe true/false, Numerik mówi *dlaczego* coś jest nieprawidłowe (zły checksum, niemożliwa data urodzenia, zła długość itd.) i od razu parsuje numer na gotowy obiekt — z PESEL-u wyciągniesz np. datę urodzenia, płeć i wiek jednym wywołaniem.
Zero zależności produkcyjnych, brak wyrażeń regularnych (cała logika na tablicach cyfr, więc bez ryzyka ReDoS), PHP 8.3+, PHPStan poziom 10, pełne testy.
```php
$pesel = Numerik::pesel()->parse('92060512186');
$pesel->getBirthDate()->format('Y-m-d'); // '1992-06-05'
$pesel->getAge(); // liczone od dziś
```
GitHub: https://github.com/sqrcz/numerik
Dokumentacja: https://numerik.slashlab.pl https://numerik-js.slashlab.pl
#programowanie #php #javascript #laravel #opensource





Komentarze (2)
najlepsze
Do tego np. w VatEU masz PL hardcoded w getFormatted, mimo że masz oddzielną metodę zwracającą kod kraju.
W ValidationResult pass, fail i failResult są metodami sztuka dla sztuki, robią tylko i wyłącznie jako alias dla konstruktora. Gdyby chociaż musiały żonglować dużą ilością argumentów, to może jeszcze, ale tak to jest po prostu nadmiarowy kod chyba
Dzięki za merytoryczne code review. Z częścią uwag pełna zgoda, z resztą pozwolę sobie polemizować:
VatEu i hardcoded "PL" - Racja, ewidentne niedopatrzenie. W
getFormatted()wbiłem to na sztywno, zamiast użyć$this->getCountryCode()