Validadores de valor
Precisa verificar rápida e facilmente se uma variável contém, por exemplo, um endereço de e-mail válido? Então Nette\Utils\Validators virá a calhar, uma classe estática com funções úteis para a validação de valores.
Instalação:
Todos os exemplos assumem que a seguinte classe está definida:
Utilização básica
A classe Validators
tem vários métodos para validação de valores, tais como isList(), isUnicode(), isEmail(), isUrl(), etc., para uso em seu código:
Além disso, pode verificar se o valor satisfaz os chamados tipos esperados, que é um fio
onde as opções individuais são separadas por uma barra vertical |
. Isto facilita a verificação dos tipos de
união utilizando if():
Mas também lhe dá a oportunidade de criar um sistema onde é necessário escrever as expectativas como cordas (por exemplo, em anotações ou configuração) e depois verificar de acordo com elas.
Você também pode declarar a afirmação, que lança uma exceção se não for cumprida.
Tipos Esperados
Um tipo esperado é uma cadeia que consiste em uma ou mais variantes separadas por uma barra vertical |
, similar
to writing types in PHP (ie. 'int|string|bool')
. Notação nula também é permitida ?int
.
Um array onde todos os elementos são de um certo tipo está escrito no formulário int[]
.
Alguns tipos podem ser seguidos por um cólon e o comprimento :length
ou a faixa :[min]..[max]
por
exemplo string:10
(um fio com 10 bytes de comprimento), float:10..
(número 10 e maior),
array:..10
(conjunto de até dez elementos) ou list:10..20
(lista com 10 a 20 elementos), ou uma
expressão regular para pattern:[0-9]+
.
Visão geral dos tipos e regras:
Tipos de PHP | ||||
---|---|---|---|---|
array |
intervalo para o número de itens pode ser dado | |||
bool |
||||
float |
intervalo para o valor pode ser dado | |||
int |
intervalo para o valor pode ser dado | |||
null |
||||
object |
||||
resource |
||||
scalar |
int | float | bool | string |
string |
o intervalo para o comprimento em bytes pode ser dado | |||
callable |
||||
iterable |
||||
mixed |
||||
pseudo-tipos | ||||
list |
matriz indexada, o intervalo para o número de itens pode ser dado | |||
none |
valor vazio: '' |
null , false |
||
number |
int\\ | float | ||
numeric |
número incluindo representação textual | |||
numericint |
integer incluindo representação textual | |||
unicode |
Cordel UTF-8, o intervalo para o comprimento em caracteres pode ser dado | |||
classe de caracteres (não pode ser uma corda vazia) | ||||
alnum |
todos os caracteres são alfanuméricos | |||
alpha |
todos os caracteres são letras [A-Za-z] |
|||
digit |
todos os caracteres são dígitos | |||
lower |
todos os caracteres são letras minúsculas [a-z] |
|||
space |
todos os caracteres são espaços | |||
upper |
todos os caracteres são letras maiúsculas [A-Z] |
|||
xdigit |
todos os caracteres são dígitos hexadecimais [0-9A-Fa-f] |
|||
validação da sintaxe | ||||
pattern |
uma expressão regular que a string **entire*** deve combinar | |||
email |
||||
identifier |
Identificador PHP | |||
url |
URL | |||
uri |
URI | |||
validação do ambiente | ||||
class |
é uma classe existente | |||
interface |
é a interface existente | |||
directory |
é um diretório existente | |||
file |
é um arquivo existente |
Asserção
assert($value, string $expected, string
$label='variable'
): void
Verifica que o valor é do tipo esperado, separado por tubo. Caso contrário, lança a
exceção Nette\Utils\AssertionException.
A palavra variable
na mensagem de exceção pode ser substituída pelo parâmetro $label
.
assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void
Verifica que o elemento $key
na matriz $array
é de tipos
esperados separados por tubo. Caso contrário, ele lança a exceção Nette\Utils\AssertionException. A string
item '%' in array
na mensagem de exceção pode ser substituída pelo parâmetro $label
.
Validadores
is($value, string $expected): bool
Verifica se o valor é do tipo esperado, separado por tubo.
isEmail(mixed $value): bool
Verifica que o valor é um endereço de e-mail válido. Não verifica que o domínio realmente existe, apenas a sintaxe é verificada. A função também conta com TLDs futuros, que também podem estar em unicode.
isInRange(mixed $value, array $range): bool
Verifica se o valor está na faixa determinada [min, max]
onde o limite superior ou inferior pode ser omitido
(null
). Números, cordas e objetos DateTime podem ser comparados.
Se ambos os limites estiverem ausentes ([null, null]
) ou o valor é null
, ele retorna
false
.
isNone(mixed $value): bool
Verifica se o valor é 0
, ''
, false
ou null
.
isNumeric(mixed $value): bool
Verifica se o valor é um número ou um número escrito em um fio.
isNumericInt(mixed $value): bool
Verifica se o valor é um número inteiro ou um número inteiro escrito em um fio.
isPhpIdentifier(string $value): bool
Verifica se o valor é um identificador sintáctico válido em PHP, por exemplo, para nomes de classes, métodos, funções, etc.
isBuiltinType(string $type): bool
Determina se $type
é do tipo PHP incorporado. Caso contrário, é o nome da classe.
isTypeDeclaration(string $type): bool
Verifica se a declaração de tipo está sintaticamente correta.
isClassKeyword(string $type): bool
Determinar se $type
é um dos tipos internos self
, parent
, static
.
isUnicode(mixed $value): bool
Verifica se o valor é um fio UTF-8 válido.
isUrl(mixed $value): bool
Verifica se o valor é um endereço URL válido.
isUri(string $value): bool
Verifica que o valor é um endereço URI válido, ou seja, na verdade, uma cadeia que começa com um esquema sintáctico válido.