Értékellenőrzők
Gyorsan és egyszerűen szeretné ellenőrizni, hogy egy változó tartalmaz-e például érvényes e-mail címet? Akkor jól fog jönni a Nette\Utils\Validators, egy statikus osztály, amely hasznos függvényeket tartalmaz az értékek érvényesítéséhez.
Telepítés:
Minden példa feltételezi, hogy a következő osztály alias van definiálva:
Alapvető használat
A Validators
osztály számos módszerrel rendelkezik az értékek érvényesítésére, mint például az isList(), isUnicode(), isEmail(), isUrl(), stb., amelyeket a kódodban használhatsz:
Továbbá képes ellenőrizni, hogy az érték megfelel-e az úgynevezett elvárt
típusoknak, ami egy olyan karakterlánc, amelyben az egyes opciókat függőleges vonallal |
választják el. Ez
megkönnyíti az unió típusok ellenőrzését az if() segítségével:
De lehetőséget ad arra is, hogy olyan rendszert hozzunk létre, ahol az elvárásokat stringként kell leírni (például annotációkban vagy konfigurációban), majd ezek szerint ellenőrizni.
Olyan állítást is deklarálhatsz, ami kivételt dob, ha nem teljesül.
Várható típusok
Az elvárt típusok egy vagy több, függőleges vonallal elválasztott változatból álló karakterlánc |
,
similar to writing types in PHP (ie. 'int|string|bool')
. A nullázható jelölés is megengedett
?int
.
Egy olyan tömböt, amelynek minden eleme egy bizonyos típusba tartozik, a int[]
formában írunk le.
Egyes típusokat kettőspont és a hossz :length
vagy a tartomány követheti. :[min]..[max]
, pl.
string:10
(10 bájt hosszúságú karakterlánc), float:10..
(10-es és annál nagyobb szám),
array:..10
(legfeljebb tíz elemű tömb) vagy list:10..20
(10–20 elemű lista), vagy egy reguláris
kifejezés a következőre pattern:[0-9]+
.
A típusok és szabályok áttekintése:
PHP típusok | ||
---|---|---|
array |
az elemek számának tartománya megadható. | |
bool |
||
float |
értéktartományt lehet megadni. | |
int |
az érték tartománya megadható. | |
null |
||
object |
||
resource |
||
scalar |
int|float|bool|string | |
string |
meg lehet adni a bájtban megadott hossz tartományt. | |
callable |
||
iterable |
||
mixed |
||
pszeudotípusok | ||
list |
indexelt tömb, az elemek számának tartománya megadható. | |
none |
üres érték: '' , null , false |
|
number |
int\ | float |
numeric |
szám, beleértve a szöveges megjelenítést is | |
numericint |
egész szám, beleértve a szöveges ábrázolást is. | |
unicode |
UTF-8 karakterlánc, megadható a karakterekben kifejezett hosszúság tartománya. | |
karakterosztály (nem lehet üres karakterlánc) | ||
alnum |
minden karakter alfanumerikus | |
alpha |
minden karakter betű [A-Za-z] |
|
digit |
minden karakter számjegy | |
lower |
minden karakter kisbetűs betű [a-z] |
|
space |
minden karakter szóköz | |
upper |
minden karakter nagybetűs betű [A-Z] |
|
xdigit |
minden karakter hexadecimális számjegyek [0-9A-Fa-f] |
|
syntax validation | ||
pattern |
egy reguláris kifejezés, amelynek a teljes sztringnek meg kell felelnie. | |
email |
||
identifier |
PHP azonosító | |
url |
URL | |
uri |
URI | |
környezeti érvényesítés | ||
class |
létezik osztály | |
interface |
létező interfész | |
directory |
létező könyvtár | |
file |
létező fájl |
Állítás
assert($value, string $expected, string
$label='variable'
): void
Ellenőrzi, hogy az érték a pipával elválasztott elvárt típusokból áll-e. Ha nem,
akkor kivételt dob Nette\Utils\AssertionException.
A kivételüzenetben a variable
szó helyettesíthető a $label
paraméterrel.
assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void
Ellenőrzi, hogy a $array
tömb $key
eleme a tömbben csővel elválasztott, elvárt típusokból áll. Ha nem, akkor kivételt dob Nette\Utils\AssertionException.
A kivételüzenetben szereplő item '%' in array
karakterláncot a $label
paraméterrel lehet
helyettesíteni.
Validátorok
is($value, string $expected): bool
Ellenőrzi, hogy az érték a pipával elválasztott elvárt típusokból áll-e.
isEmail(mixed $value): bool
Ellenőrzi, hogy az érték érvényes e-mail cím-e. Nem ellenőrzi, hogy a domain valóban létezik-e, csak a szintaxisát ellenőrzi. A funkció számol a jövőbeli TLD-kkel is, amelyek szintén lehetnek unicode-ban.
isInRange(mixed $value, array $range): bool
Ellenőrzi, hogy az érték a megadott tartományban van-e. [min, max]
, ahol a felső vagy alsó határérték
elhagyható (null
). Számok, karakterláncok és DateTime objektumok összehasonlíthatók.
Ha mindkét határ hiányzik ([null, null]
), vagy az érték null
, akkor a false
értéket adja vissza.
isNone(mixed $value): bool
Ellenőrzi, hogy az érték 0
, ''
, false
vagy null
.
isNumeric(mixed $value): bool
Ellenőrzi, hogy az érték egy szám vagy egy karakterláncba írt szám.
isNumericInt(mixed $value): bool
Ellenőrzi, hogy az érték egész szám vagy egy karakterláncba írt egész szám.
isPhpIdentifier(string $value): bool
Ellenőrzi, hogy az érték egy szintaktikailag érvényes azonosító-e a PHP-ben, például osztályok, metódusok, függvények stb. nevei esetében.
isBuiltinType(string $type): bool
Megállapítja, hogy a $type
PHP beépített típus-e. Ellenkező esetben az osztály neve.
isTypeDeclaration(string $type): bool
Ellenőrzi, hogy a típusdeklaráció szintaktikailag helyes-e.
isClassKeyword(string $type): bool
Megállapítja, hogy a $type
egyike-e a self
, parent
, static
belső
típusoknak.
isUnicode(mixed $value): bool
Ellenőrzi, hogy az érték érvényes UTF-8 karakterlánc-e.
isUrl(mixed $value): bool
Ellenőrzi, hogy az érték érvényes URL-cím-e.
isUri(string $value): bool
Ellenőrzi, hogy az érték érvényes URI-cím-e, azaz valóban egy szintaktikailag érvényes sémával kezdődő karakterlánc.