Metody isValid() i validate() są dostępne na każdej klasie identyfikatora i nigdy nie rzucają wyjątku.
validate() zwraca klasę readonly SlashLab\Numerik\Result\ValidationResult.
| Właściwość | Typ | Opis |
|---|
$isValid | bool | true jeśli walidacja zakończyła się sukcesem. |
$failures | list<ValidationFailure> | Pusta tablica przy poprawnym numerze; jeden lub więcej błędów przy nieprawidłowym. |
| Metoda | Typ zwracany | Opis |
|---|
isFailed() | bool | Negacja $isValid. |
getFailures() | list<ValidationFailure> | Zwraca tablicę błędów. |
getFirstFailure() | ValidationFailure|null | Pierwszy błąd lub null przy poprawnym wejściu. |
hasFailureReason(ValidationFailureReason $reason) | bool | true jeśli którykolwiek błąd pasuje do podanego powodu. |
use SlashLab\Numerik\Numerik;
use SlashLab\Numerik\Enums\ValidationFailureReason;
$result = Numerik::pesel()->validate('92060512186');
$result->isValid; // true
$result->isFailed(); // false
$result->getFirstFailure(); // null
$result = Numerik::nip()->validate('0000000000');
$result->isValid; // false
$result->isFailed(); // true
// Sprawdź pierwszy (i zazwyczaj jedyny) błąd
$failure = $result->getFirstFailure();
$failure->reason; // ValidationFailureReason::InvalidFormat
$failure->message; // 'NIP tax office code cannot be 000.'
// Sprawdź konkretny powód
$result->hasFailureReason(ValidationFailureReason::InvalidChecksum); // false
$result->hasFailureReason(ValidationFailureReason::InvalidFormat); // true
Każdy element w $failures to klasa readonly SlashLab\Numerik\Result\ValidationFailure.
| Właściwość | Typ | Opis |
|---|
$reason | ValidationFailureReason | Przypadek enum identyfikujący kategorię błędu. |
$message | string | Opis błędu przeznaczony do logowania i debugowania. |
SlashLab\Numerik\Enums\ValidationFailureReason to backed string enum.
| Przypadek | Wartość | Opis |
|---|
InvalidLength | invalid_length | Numer ma nieprawidłową liczbę cyfr. |
InvalidCharacters | invalid_characters | Po usunięciu dozwolonych separatorów pozostały niedozwolone znaki. |
InvalidFormat | invalid_format | Długość i znaki są poprawne, ale numer narusza regułę strukturalną (np. kod urzędu skarbowego NIP 000). |
| Przypadek | Wartość | Opis |
|---|
InvalidChecksum | invalid_checksum | Obliczona suma kontrolna nie zgadza się z cyfrą kontrolną. |
| Przypadek | Wartość | Opis |
|---|
InvalidDate | invalid_date | Data zakodowana w identyfikatorze nie istnieje w kalendarzu. |
FutureDate | future_date | Zakodowana data urodzenia jest w przyszłości. |
InvalidMonth | invalid_month | Kodowanie miesiąca nie odpowiada żadnemu ze znanych zakresów stulecia. |
| Przypadek | Wartość | Opis |
|---|
AllZeros | all_zeros | Wszystkie cyfry są zerami — strukturalnie możliwe, ale semantycznie nieprawidłowe. |
AllSameDigit | all_same_digit | Wszystkie cyfry są takie same i niezerowe. |
ValidationResult udostępnia trzy statyczne konstruktory przydatne przy pisaniu testów:
ValidationResult::pass();
// Niepowodzenie z listą błędów
new ValidationFailure(ValidationFailureReason::InvalidChecksum, 'Checksum mismatch.'),
// Niepowodzenie z jednym powodem — skrócona forma
ValidationResult::failWithReason(
ValidationFailureReason::InvalidLength,
'Expected 11 digits, got 10.',