Validateurs de valeurs
Vous avez besoin de vérifier rapidement et facilement qu'une variable contient par exemple une adresse électronique valide ? Alors Nette\Utils\Validators vous sera utile. Il s'agit d'une classe statique contenant des fonctions utiles pour la validation des valeurs.
Installation :
Tous les exemples supposent que l'alias de classe suivant est défini :
Utilisation de base
La classe Validators
possède un certain nombre de méthodes pour valider des valeurs, telles que isList(), isUnicode(), isEmail(), isUrl(), etc. à utiliser dans votre code :
En outre, il peut vérifier si la valeur satisfait à ce qu'on appelle les types attendus,
qui est une chaîne de caractères où les différentes options sont séparées par une barre verticale |
. Cela
permet de vérifier facilement les types d'union en utilisant if():
Mais cela vous donne également la possibilité de créer un système où il est nécessaire d'écrire les attentes sous forme de chaînes (par exemple dans les annotations ou la configuration) et de vérifier ensuite en fonction de celles-ci.
Vous pouvez également déclarer une assertion, qui lève une exception si elle n'est pas satisfaite.
Types d'attentes
Un type attendu est une chaîne constituée d'une ou plusieurs variantes séparées par une barre verticale |
,
similar to writing types in PHP (ie. 'int|string|bool')
. La notation nullable est également autorisée
?int
.
Un tableau dont tous les éléments sont d'un certain type s'écrit sous la forme int[]
.
Certains types peuvent être suivis d'un deux-points et de la longueur :length
ou de l'intervalle
:[min]..[max]
par exemple string:10
(une chaîne de 10 octets), float:10..
(un nombre égal
ou supérieur à 10), array:..10
(un tableau de 10 éléments maximum) ou list:10..20
(une liste de
10 à 20 éléments), ou encore une expression régulière comme pattern:[0-9]+
.
Aperçu des types et des règles :
Types PHP | ||
---|---|---|
array |
On peut donner une fourchette pour le nombre d'éléments | |
bool |
||
float – La valeur peut être indiquée dans une plage donnée. |
||
int – L'étendue de la valeur peut être donnée. |
||
null |
||
object |
||
resource |
||
scalar |
int|float|bool|string | |
string |
La longueur en octets peut être indiquée dans une plage donnée. | |
callable |
||
iterable |
||
mixed |
||
pseudo-types | ||
list |
tableau indexé, le nombre d'éléments peut être donné dans une fourchette. | |
none |
valeur vide : '' , null , false |
|
number |
int| | float |
numeric |
nombre incluant une représentation textuelle | |
numericint |
nombre entier incluant une représentation textuelle | |
unicode |
Chaîne de caractères UTF-8, la longueur en caractères peut être indiquée dans une fourchette | |
classe de caractères (ne peut être une chaîne vide) | ||
alnum |
tous les caractères sont alphanumériques | |
alpha |
tous les caractères sont des lettres [A-Za-z] |
|
digit |
tous les caractères sont des chiffres | |
lower |
tous les caractères sont des lettres minuscules [a-z] |
|
space |
tous les caractères sont des espaces | |
upper |
tous les caractères sont des lettres majuscules [A-Z] |
|
xdigit |
tous les caractères sont des chiffres hexadécimaux [0-9A-Fa-f] |
|
validation de la syntaxe | ||
pattern |
une expression régulière à laquelle la entière chaîne doit correspondre | |
email |
Courriel | |
identifier |
Identifiant PHP | |
url |
URL | |
uri |
URI | |
Validation de l'environnement | ||
class |
est une classe existante | |
interface |
est une interface existante | |
directory |
est un répertoire existant | |
file |
est un fichier existant |
Assertion
assert($value, string $expected, string
$label='variable'
): void
Vérifie que la valeur est constituée des types attendus séparés par un pipe. Si ce n'est
pas le cas, il lève l'exception Nette\Utils\AssertionException. Le mot
variable
dans le message d'exception peut être remplacé par le paramètre $label
.
assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void
Vérifie que l'élément $key
dans le tableau $array
est constitué des types attendus séparés par un pipe. Si ce n'est pas le cas, il lève l'exception Nette\Utils\AssertionException. La chaîne
item '%' in array
dans le message d'exception peut être remplacée par le paramètre $label
.
Validateurs
is($value, string $expected): bool
Vérifie si la valeur est constituée de types attendus séparés par un pipe.
isEmail(mixed $value): bool
Vérifie que la valeur est une adresse électronique valide. Elle ne vérifie pas que le domaine existe réellement, seule la syntaxe est vérifiée. La fonction tient également compte des futurs TLD, qui peuvent également être en unicode.
isInRange(mixed $value, array $range): bool
Vérifie si la valeur se situe dans l'intervalle donné [min, max]
où la limite supérieure ou inférieure peut
être omise (null
). Les nombres, les chaînes de caractères et les objets DateTime peuvent être comparés.
Si les deux limites sont manquantes ([null, null]
) ou si la valeur est null
, il renvoie
false
.
isNone(mixed $value): bool
Vérifie si la valeur est 0
, ''
, false
ou null
.
isNumeric(mixed $value): bool
Vérifie si la valeur est un nombre ou un nombre écrit dans une chaîne.
isNumericInt(mixed $value): bool
Vérifie si la valeur est un nombre entier ou un nombre entier écrit dans une chaîne de caractères.
isPhpIdentifier(string $value): bool
Vérifie si la valeur est un identifiant syntaxiquement valide en PHP, par exemple pour les noms de classes, de méthodes, de fonctions, etc.
isBuiltinType(string $type): bool
Détermine si $type
est un type intégré à PHP. Sinon, c'est le nom de la classe.
isTypeDeclaration(string $type): bool
Vérifie si la déclaration de type est syntaxiquement correcte.
isClassKeyword(string $type): bool
Détermine si $type
est l'un des types internes self
, parent
, static
.
isUnicode(mixed $value): bool
Vérifie si la valeur est une chaîne UTF-8 valide.
isUrl(mixed $value): bool
Vérifie si la valeur est une adresse URL valide.
isUri(string $value): bool
Vérifie que la valeur est une adresse URI valide, c'est-à-dire qu'il s'agit bien d'une chaîne commençant par un schéma syntaxiquement valide.