Formát zprávy – Validator API¶
Detailní pohled na Validator třídu a return types.
Helper funkce validation()¶
Nejjednoduší způsob – validuj jedno pole:
use function Core\Validation\validation;
$error = validation(
string $key,
mixed $value,
string $rule
): string|false
Vrací:
- false – validace OK
- string – chybová zpráva
Příklady:
// Email
validation('email', 'test@example.com', 'required|email');
// → false (OK)
validation('email', 'invalid', 'required|email');
// → "email validation failed"
// Heslo
validation('password', 'secret123', 'required|min:8');
// → false (OK)
validation('password', 'pass', 'required|min:8');
// → "password validation failed"
// Telefon
validation('phone', '+420777123456', 'required|phone_e164');
// → false (OK)
validation('phone', '777123456', 'required|phone_e164');
// → "phone validation failed"
Validator třída¶
Plná validace s custom zprávami:
Metody¶
make(array $data, array $rules): self¶
Nastav data a validační pravidla:
$validator->make(
$_POST, // data to validate
[
'email' => 'required|email',
'password' => 'required|min:8',
]
);
Fluent return – vrací $this pro chaining.
validate(): void¶
Spusť validaci všech pravidel:
Postranní efekt: Vnitřně naplní $this->errors.
fails(): bool¶
Zkontroluj jestli validace selhala:
errors(): ValidationErrors¶
Vrátí ValidationErrors objekt s chybami:
ValidationErrors třída¶
Kontejner pro chyby s metodami pro přístup:
all(string $format = ':message'): array¶
Všechny chyby jako flat array:
S HTML formátováním:
$errors->all('<span class="error">:message</span>');
// ['<span class="error">Email je povinný</span>', ...]
first(string $field): ?string¶
První chyba pole (nebo null):
firstOfAll(): array¶
První chyba každého pole (asociativní):
$errors->firstOfAll();
// [
// 'email' => 'Email je povinný',
// 'password' => 'Heslo je příliš krátké',
// ]
Příklady flow¶
Jednoduchá validace¶
use function Core\Validation\validation;
$error = validation('email', $email, 'required|email');
if ($error !== false) {
echo "Chyba: " . $error;
exit;
}
// Zpracuj data
Formulář s více poli¶
use Core\Validation\Validator;
$validator = new Validator([
'email' => 'Email je povinný',
'password' => 'Heslo je příliš krátké',
]);
$validation = $validator->make($_POST, [
'email' => 'required|email',
'password' => 'required|min:8',
]);
$validation->validate();
if ($validation->fails()) {
$errors = $validation->errors();
// Odešli error response
response()->json([
'success' => false,
'errors' => $errors->firstOfAll(),
], 422);
exit;
}
// Pokračuj
JSON odpověď s HTML span¶
if ($validation->fails()) {
$errorList = $validation->errors()->all('<span>:message</span>');
response()->json([
'success' => false,
'messages' => $errorList,
], 422);
exit;
}
Vlastní chybové zprávy¶
Nastavit v konstruktoru Validator:
$validator = new Validator([
'email' => 'Email musí být vyplněn',
'password' => 'Heslo musí mít minimálně 8 znaků',
]);
Pokud není definovaná zpráva pro pole, použije se default: "[field] validation failed".
Pipe syntax¶
Pravidla se oddělují |:
Parametry se předávají za ::
'min:8' // min value/length 8
'max:255' // max 255
'range:10,100' // between 10 and 100
'in:a,b,c' // one of values
'regex:/^[A-Z]+$/' // regex pattern
Performance¶
- Všechna pravidla se spouští vždy (i při selhání prvního)
- Chyby se akumulují – nebreakuje se na prvním selhání
- Jednoduchá pravidla (required, email) jsou rychlá
- libphonenumber (phone_e164) je pomalejší – cache pokud možno
Notes¶
- Type strictness –
declare(strict_types=1)– všechno typované - No dependencies – Rakit odstraněn
- Transparent – vše čitelné, bez magic