Validatori de valori
Aveți nevoie să verificați rapid și ușor dacă o variabilă conține, de exemplu, o adresă de e-mail validă? Atunci vă va fi de folos Nette\Utils\Validators, o clasă statică cu funcții utile pentru validarea valorilor.
Instalare:
Toate exemplele presupun că este definit următorul alias de clasă:
Utilizare de bază
Clasa Validators
are o serie de metode de validare a valorilor, cum ar fi isList(), isUnicode(), isEmail(), isUrl() etc., care pot fi
utilizate în codul dumneavoastră:
În plus, aceasta poate verifica dacă valoarea satisface așa-numitele tipuri așteptate,
care este un șir de caractere în care opțiunile individuale sunt separate de o bară verticală |
. Acest lucru
facilitează verificarea tipurilor de uniune folosind if():
Dar vă oferă, de asemenea, posibilitatea de a crea un sistem în care este necesar să scrieți așteptările sub formă de șiruri de caractere (de exemplu, în adnotări sau în configurare) și apoi să verificați în funcție de acestea.
De asemenea, puteți declara o aserțiune, care aruncă o excepție dacă nu este îndeplinită.
Tipuri de așteptări
Un tip așteptat este un șir de caractere format din una sau mai multe variante separate de o bară verticală
|
, similar to writing types in PHP (ie. 'int|string|bool')
. Este permisă, de asemenea, o notație
nulă ?int
.
O matrice în care toate elementele sunt de un anumit tip se scrie sub forma int[]
.
Unele tipuri pot fi urmate de două puncte și de lungimea :length
sau de intervalul :[min]..[max]
,
de exemplu string:10
(un șir de caractere cu o lungime de 10 octeți), float:10..
(număr mai mare
sau egal cu 10), array:..10
(matrice de până la zece elemente) sau list:10..20
(listă cu 10–20 de
elemente), sau o expresie regulată pentru pattern:[0-9]+
.
Prezentare generală a tipurilor și a regulilor:
Tipuri PHP | |
---|---|
array |
se poate da un interval pentru numărul de elemente |
bool |
|
float |
se poate da un interval pentru valoarea |
int |
se poate indica intervalul pentru valoarea |
null |
|
object |
|
resource |
|
scalar |
int|float|bool|stringă |
string |
se poate indica intervalul pentru lungimea în octeți |
callable |
|
iterable |
|
mixed |
|
pseudo-tipuri | |
list |
array indexat, se poate da un interval pentru numărul de elemente |
none |
valoare goală: '' , null , false |
number |
int|float |
numeric |
număr care include o reprezentare textuală |
numericint |
număr întreg, inclusiv reprezentare textuală |
unicode |
șir UTF-8, se poate da un interval pentru lungimea în caractere |
clasa de caractere (nu poate fi un șir gol) | |
alnum |
toate caracterele sunt alfanumerice |
alpha |
toate caracterele sunt litere [A-Za-z] |
digit |
toate caracterele sunt cifre |
lower |
toate caracterele sunt litere minuscule [a-z] |
space |
toate caracterele sunt spații |
upper |
toate caracterele sunt litere majuscule [A-Z] |
xdigit |
toate caracterele sunt cifre hexazecimale [0-9A-Fa-f] |
validarea sintaxei | |
pattern |
o expresie regulată cu care trebuie să se potrivească întregul șir de caractere |
email |
|
identifier |
Identificatorul PHP |
url |
URL |
uri |
URI |
validarea mediului | |
class |
este o clasă existentă |
interface |
este o interfață existentă |
directory |
este un director existent |
file |
este un fișier existent |
Afirmație
assert($value, string $expected, string
$label='variable'
): void
Verifică dacă valoarea este de tipurile așteptate, separate prin pipe. În caz contrar, se
aruncă o excepție Nette\Utils\AssertionException. Cuvântul
variable
din mesajul de excepție poate fi înlocuit cu parametrul $label
.
assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void
Verifică dacă elementul $key
din array-ul $array
este format din tipurile așteptate, separate prin pipe. În caz contrar, se aruncă excepția Nette\Utils\AssertionException. Șirul
item '%' in array
din mesajul de excepție poate fi înlocuit cu parametrul $label
.
Validatori
is($value, string $expected): bool
Verifică dacă valoarea este formată din tipurile așteptate, separate prin pipe.
isEmail(mixed $value): bool
Verifică dacă valoarea este o adresă de e-mail validă. Nu se verifică dacă domeniul există cu adevărat, ci doar sintaxa. Funcția ia în calcul și viitoarele TLD-uri, care pot fi, de asemenea, în unicode.
isInRange(mixed $value, array $range): bool
Verifică dacă valoarea se află în intervalul dat [min, max]
, unde limita superioară sau inferioară poate fi
omisă (null
). Pot fi comparate numere, șiruri de caractere și obiecte DateTime.
În cazul în care ambele limite lipsesc ([null, null]
) sau valoarea este null
, se returnează
false
.
isNone(mixed $value): bool
Verifică dacă valoarea este 0
, ''
, false
sau null
.
isNumeric(mixed $value): bool
Verifică dacă valoarea este un număr sau un număr scris într-un șir de caractere.
isNumericInt(mixed $value): bool
Verifică dacă valoarea este un număr întreg sau un număr întreg scris într-un șir de caractere.
isPhpIdentifier(string $value): bool
Verifică dacă valoarea este un identificator valid din punct de vedere sintactic în PHP, de exemplu pentru nume de clase, metode, funcții etc.
isBuiltinType(string $type): bool
Determină dacă $type
este un tip încorporat în PHP. În caz contrar, este numele clasei.
isTypeDeclaration(string $type): bool
Verifică dacă declarația de tip este corectă din punct de vedere sintactic.
isClassKeyword(string $type): bool
Determină dacă $type
este unul dintre tipurile interne self
, parent
,
static
.
isUnicode(mixed $value): bool
Verifică dacă valoarea este un șir UTF-8 valid.
isUrl(mixed $value): bool
Verifică dacă valoarea este o adresă URL validă.
isUri(string $value): bool
Verifică dacă valoarea este o adresă URI validă, adică, de fapt, un șir care începe cu o schemă validă din punct de vedere sintactic.