Przejdź do głównej zawartości

KRS

KRS (Krajowy Rejestr Sądowy) to sekwencyjny numer nadawany podmiotom prawnym przy wpisie do rejestru. Składa się z maksymalnie 10 cyfr.

use SlashLab\Numerik\Numerik;
// Szybkie sprawdzenie
Numerik::krs()->isValid('0000127206'); // true
// Zera wiodące nie są wymagane — numer zostanie dopełniony przy formatowaniu
Numerik::krs()->isValid('127206'); // true
// Pełny obiekt z danymi
$result = Numerik::krs()->validate('0000127206');
$result->isValid; // true
// Parsowanie do obiektu z danymi
$krs = Numerik::krs()->parse('0000127206');
// Null zamiast wyjątku
$krs = Numerik::krs()->tryParse('zły-numer'); // null

parse() i tryParse() zwracają instancję SlashLab\Numerik\ValueObjects\Krs.

MetodaTyp zwracanyOpis
getRaw()stringOryginalny numer, bez zmian.
getNormalized()stringSame cyfry tak jak podane, bez dopełniania zerami.
__toString()stringTo samo co getNormalized().
MetodaTyp zwracanyOpis
getFormatted()stringNumer dopełniony zerami do 10 cyfr, np. 0000127206.
getNumericValue()intNumeryczna wartość całkowita numeru KRS.
$krs = Numerik::krs()->parse('0000127206');
$krs->getRaw(); // '0000127206'
$krs->getNormalized(); // '0000127206'
$krs->getFormatted(); // '0000127206'
$krs->getNumericValue(); // 127206
// Zera wiodące nie są wymagane na wejściu
$krs = Numerik::krs()->parse('127206');
$krs->getRaw(); // '127206'
$krs->getNormalized(); // '127206'
$krs->getFormatted(); // '0000127206'
$krs->getNumericValue(); // 127206

KRS to numer sekwencyjny bez sumy kontrolnej. Walidacja jest wyłącznie strukturalna:

  1. Usuń spacje. Wymagaj od 1 do 10 cyfr.
  2. Sprawdź, że wszystkie pozostałe znaki są cyframi.
  3. Sprawdź, że wartość numeryczna nie wynosi zero.
  4. W trybie ścisłym: dopełnij do 10 cyfr zerami i odrzuć wejścia z identycznymi cyframi — błąd AllSameDigit.

Numer, który przechodzi te sprawdzenia, jest strukturalnie prawidłowy — odpowiada formatowi KRS, ale nie gwarantuje, że podmiot o takim numerze istnieje w rejestrze.

PowódWartośćWarunek
InvalidLengthinvalid_lengthNumer ma więcej niż 10 cyfr po normalizacji.
InvalidCharactersinvalid_charactersPo usunięciu białych znaków pozostały znaki niebędące cyframi.
AllZerosall_zerosWartość numeryczna wynosi 0 — nie jest prawidłowym numerem rejestru.
AllSameDigitall_same_digitWszystkie 10 cyfr jest identycznych — tylko w trybie ścisłym.
If this saved you time → ☕ Buy me a coffee