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 Petrovo\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:
use Petrovo\Validation\Validator;
$validator = new Validator(
array $customMessages = []
);
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:
$validator->make($_POST, $rules);
$validator->validate(); // Projdi všechna pravidla
Postranní efekt: Vnitřně naplní $this->errors.
fails(): bool
Zkontroluj jestli validace selhala:
if ($validator->fails()) {
// Má chyby
}
errors(): ValidationErrors
Vrátí ValidationErrors objekt s chybami:
$errors = $validator->errors();
echo $errors->first('email');
ValidationErrors třída
Kontejner pro chyby s metodami pro přístup:
all(string $format = ':message'): array
Všechny chyby jako flat array:
$errors->all();
// ['Email je povinný', 'Heslo je příliš krátké']
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):
$errors->first('email');
// "Email je povinný"
$errors->first('nonexistent');
// 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 Petrovo\Validation\validation;
$error = validation('email', $email, 'required|email');
if ($error !== false) {
echo "Chyba: " . $error;
exit;
}
// Zpracuj data
Formulář s více poli
use Petrovo\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í |:
'required|email|min:8'
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