Przejdź do głównej zawartości

Wyniki walidacji

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śćTypOpis
$isValidbooltrue jeśli walidacja zakończyła się sukcesem.
$failureslist<ValidationFailure>Pusta tablica przy poprawnym numerze; jeden lub więcej błędów przy nieprawidłowym.
MetodaTyp zwracanyOpis
isFailed()boolNegacja $isValid.
getFailures()list<ValidationFailure>Zwraca tablicę błędów.
getFirstFailure()ValidationFailure|nullPierwszy błąd lub null przy poprawnym wejściu.
hasFailureReason(ValidationFailureReason $reason)booltrue jeśli którykolwiek błąd pasuje do podanego powodu.
use SlashLab\Numerik\Numerik;
use SlashLab\Numerik\Enums\ValidationFailureReason;
// Wynik pozytywny
$result = Numerik::pesel()->validate('92060512186');
$result->isValid; // true
$result->isFailed(); // false
$result->failures; // []
$result->getFirstFailure(); // null
// Wynik negatywny
$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śćTypOpis
$reasonValidationFailureReasonPrzypadek enum identyfikujący kategorię błędu.
$messagestringOpis błędu przeznaczony do logowania i debugowania.

SlashLab\Numerik\Enums\ValidationFailureReason to backed string enum.

PrzypadekWartośćOpis
InvalidLengthinvalid_lengthNumer ma nieprawidłową liczbę cyfr.
InvalidCharactersinvalid_charactersPo usunięciu dozwolonych separatorów pozostały niedozwolone znaki.
InvalidFormatinvalid_formatDługość i znaki są poprawne, ale numer narusza regułę strukturalną (np. kod urzędu skarbowego NIP 000).
PrzypadekWartośćOpis
InvalidChecksuminvalid_checksumObliczona suma kontrolna nie zgadza się z cyfrą kontrolną.
PrzypadekWartośćOpis
InvalidDateinvalid_dateData zakodowana w identyfikatorze nie istnieje w kalendarzu.
FutureDatefuture_dateZakodowana data urodzenia jest w przyszłości.
InvalidMonthinvalid_monthKodowanie miesiąca nie odpowiada żadnemu ze znanych zakresów stulecia.
PrzypadekWartośćOpis
AllZerosall_zerosWszystkie cyfry są zerami — strukturalnie możliwe, ale semantycznie nieprawidłowe.
AllSameDigitall_same_digitWszystkie cyfry są takie same i niezerowe.

ValidationResult udostępnia trzy statyczne konstruktory przydatne przy pisaniu testów:

// Sukces
ValidationResult::pass();
// Niepowodzenie z listą błędów
ValidationResult::fail([
new ValidationFailure(ValidationFailureReason::InvalidChecksum, 'Checksum mismatch.'),
]);
// Niepowodzenie z jednym powodem — skrócona forma
ValidationResult::failWithReason(
ValidationFailureReason::InvalidLength,
'Expected 11 digits, got 10.',
);
If this saved you time → ☕ Buy me a coffee